2016-11-08 36 views
0

私は、CommentsTableViewCellという名前のUITableViewCellクラスを持っています。とりわけ、UIImageViewUILabelが含まれています。私が使用しているUITapGestureRecognizerはUIImageViewでは動作しますが、UILabelでは動作しません

コード:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) 
nameLabel.userInteractionEnabled = true 
avatarRoundImageView.userInteractionEnabled = true 
nameLabel.addGestureRecognizer(tapGesture) 
avatarRoundImageView.addGestureRecognizer(tapGesture) 

私はUIImageViewまたはUILabelがタップされるたびに別のUIViewControllerを示して機能を持た理解できたよう。

tapGestureは、UIImageViewでは正しく動作しますが、UILabelでは正しく動作しません。

アイデア?

答えて

1

あなたは、単一のUI要素オブジェクトとUITapGestureRecognizer動作するため、2つのUITapGestureRecognizerオブジェクトを作成するために必要なすべての制御

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) 
avatarRoundImageView.userInteractionEnabled = true 
avatarRoundImageView.addGestureRecognizer(tapGesture) 

let tapGesture2 = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) 
nameLabel.userInteractionEnabled = true 
nameLabel.addGestureRecognizer(tapGesture2) 
3

に異なるジェスチャーを必要とします。したがって、2番目のTapGestureRecognizerを作成し、UILabelと1つをUIImageViewに割り当てます。

からUIGestureRecognizerドキュメント。

ジェスチャ認識器は、特定のビューとそのビューのすべてのサブビューに対してヒットテストされたタッチで動作します。したがって、そのビューに関連付けられている必要があります。その関連付けを行うには、UIViewメソッドaddGestureRecognizer(_:)を呼び出す必要があります。ジェスチャ認識プログラムは、ビューのレスポンダーチェーンに参加しません。

関連する問題