UITapGestureRecognizer在UIImageView上工作但在UILabel上没有

我有一个名为CommentsTableViewCellUITableViewCell类,其中包括UIImageViewUILabel

我正在使用的代码:

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

你可以理解我有一个函数,只要点击UIImageViewUILabel它就会显示另一个UIViewController

让我感到震惊的是tapGestureUIImageView上正常工作,但在UILabel上却没有。

有任何想法吗?

所有控件都需要不同的手势

 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) 

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

来自UIGestureRecognizer文档。

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