簡體   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