繁体   English   中英

自定义表格视图单元格上的 UITapGestureRecognizer 不起作用

[英]UITapGestureRecognizer on custom table view cell doesn't work

我正在尝试为自定义表格视图单元格中的图像添加手势识别器。 出于某种原因,我似乎无法让它工作。 这是我的代码

override func awakeFromNib() {
    super.awakeFromNib()

    heartImage.userInteractionEnabled = true
    let gesture = UITapGestureRecognizer(target: self, action:Selector("onHeartTap"))
    gesture.delegate = self
    heartImage.addGestureRecognizer(gesture)
}

func onHeartTap(sender: UITapGestureRecognizer) 
    print("TAPPED")
}

函数awakeFromNib() 被正确调用,但在点击图像时onHeartTap() 永远不会被调用。 我究竟做错了什么?

为图像启用了用户交互,但未为单元格启用。

为故事板中的单元启用它,一切正常。 谢谢大家的帮助!

在您的选择器名称“onHeartTap”中缺少“:”

只需更换

let gesture = UITapGestureRecognizer(target: self, action:Selector("onHeartTap")) 

let gesture = UITapGestureRecognizer(target: self, action:Selector("onHeartTap:"))

还有你在awakeFromNib中这样做的任何具体原因?? 您也可以在 viewWillAppear 上执行此操作。

我有一个类似的问题, UITableViewCell 子类中的 UIImageView 不会触发我设置的手势识别器。

func viewDidLoad() {
    imageView.addGestureRecognizer(UIGestureRecognizer(target: self, action: #selector(imageViewTapped(sender:))))
    imageView.isUserInteractionEnabled = true
}

问题是没有为 UITableViewCell 调用viewDidLoad()
我可以在 UITableviewCell 中使用 viewDidLoad 方法吗?

改为在awakeFromNib()设置手势识别器:

override func awakeFromNib() {
    imageView.addGestureRecognizer(UIGestureRecognizer(target: self, action: #selector(imageViewTapped(sender:))))
    imageView.isUserInteractionEnabled = true
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM