我有一个名为UITableViewCell
的{{1}}类,其中包括CommentsTableViewCell
和UIImageView
。
我正在使用的代码:
UILabel
正如您所理解的那样,每当点击let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController))
nameLabel.userInteractionEnabled = true
avatarRoundImageView.userInteractionEnabled = true
nameLabel.addGestureRecognizer(tapGesture)
avatarRoundImageView.addGestureRecognizer(tapGesture)
或UIViewController
时,我都会显示另一个UIImageView
的功能。
让我感到震惊的是,UILabel
在tapGesture
上正常工作,而在UIImageView
上却无效。
有什么想法吗?
答案 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)