我在一个扩展UIImageView
的类中的UITableViewCell
上有一个点按手势。这段代码应该可行,我不明白为什么不这样做。我唯一能做的就是“目标”应该是什么 - 它应该是profileImage
,还是事物所在的整体ViewController?
@IBOutlet weak var profileImage: UIImageView!
var vc: TweetsViewController? = nil
override func awakeFromNib() {
super.awakeFromNib()
let tapGester = UITapGestureRecognizer(target: vc, action: Selector("handleTapGester:"))
tapGester.delegate = self
profileImage.addGestureRecognizer(tapGester)
}
func handleTapGester(tapGesture: UITapGestureRecognizer) {
print("*******hi*******")
vc?.performSegueWithIdentifier("showProfile", sender: nil)
}
为了记录,因为这似乎是一个相关的错误,我在表格单元格加载时初始化vc。
答案 0 :(得分:0)
为什么不在视图中添加点击手势识别器,然后在调用查询indexPathForRowAtPoint时找出正在点击的单元格?
如果您知道单元格,则可以确定是否正在点击UIImage,并从那里调用performSegueWithIdentifier。
如果它点击了你不感兴趣的单元格,请让它通过,并通过在识别器上调用cancelsTouchesInView来处理。
答案 1 :(得分:0)
目标应该是处理点击手势的对象,handleTapGester函数应该在您指定为目标的对象类中,而不是在UITableViewCell子类内。
您还需要在UIImageView上启用用户交互:
imageView.userInteractionEnabled = true