UITapGestureRecognizer在UIImageView上工作但不在UILabel

时间:2016-11-08 09:20:40

标签: ios swift uitableview uilabel uitapgesturerecognizer

我有一个名为UITableViewCell的{​​{1}}类,其中包括CommentsTableViewCellUIImageView

我正在使用的代码:

UILabel

正如您所理解的那样,每当点击let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) nameLabel.userInteractionEnabled = true avatarRoundImageView.userInteractionEnabled = true nameLabel.addGestureRecognizer(tapGesture) avatarRoundImageView.addGestureRecognizer(tapGesture) UIViewController时,我都会显示另一个UIImageView的功能。

让我感到震惊的是,UILabeltapGesture上正常工作,而在UIImageView上却无效。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您需要创建两个UITapGestureRecognizer对象,因为UITapGestureRecognizer适用于单个UI元素对象。因此,请创建第二个TapGestureRecognizer并将一个分配给UILabel,将一个分配给UIImageView

来自UIGestureRecognizer文档。

  

手势识别器针对特定视图和所有视图的子视图进行热门测试。因此必须与该观点相关联。要建立该关联,您必须调用UIView方法addGestureRecognizer(_:)。手势识别器不参与视图的响应者链。

答案 1 :(得分:2)

您需要为所有控件添加不同的手势

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)