无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer

Posted

技术标签:

【中文标题】无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer【英文标题】:Tap Recognizer of CustomCell on UITableViewCell can't be click 【发布时间】:2016-04-21 10:08:10 【问题描述】:

我在UITableViewCellController 上有一个笔尖作为自定义单元格。有一个带有识别器的 UIView。而且,我在cellForRowAtIndexPath里面添加了笔尖,但是我不能点击笔尖上的UIView。

CustomButton.swift(我跳过了tapRecognizer,因为在这里显示并不重要):

class CustomButton: UIView 
    var tappable = false

    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)

        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(CustomButton.tapRecognizer))
        self.addGestureRecognizer(tapGestureRecognizer)
    

这是笔尖的代码

@IBOutlet weak var customButton: CustomButton!

override func awakeFromNib() 
    self.customButton.tappable = true

UITableViewCellController中的代码:

override func viewDidLoad() 
    // register nib
    let nib = UINib(nibName: "CustomCell", bundle: nil)
    self.tableView.registerNib(nib, forCellReuseIdentifier: "customNib")


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("customNib") as! CustomCell
    return cell

当我尝试调试视图层次结构时,整个页面(包括按钮(橙色))都被 UITableViewCellContentView 覆盖。

我是否遗漏了代码中的某些内容?

【问题讨论】:

【参考方案1】:

我想你忘了userInteractionEnabled。启用用户交互以查看您想要处理的点击。

添加类似的东西

 self.view.userInteractionEnabled = true

更新:

在单元格的内容视图上添加您的视图(按钮视图),而不是直接在单元格上。

希望这会有所帮助:)

【讨论】:

谢谢,但它也不起作用。我在上面添加了tappable 之类的东西来处理交互。当我尝试调试视图层次结构时,按钮被 UITableViewCellContentView 覆盖。 这意味着我必须更换我的笔尖?我必须从笔尖中取出 ButtonView 并应该在单元格上手动添加它? 我不这么认为。它应该工作。主要关注的是您的按钮应该在 contentview 上而不是在单元格上。层次结构应该是单元格内容视图按钮【参考方案2】:

首先在单元格的 nib 中添加一个视图,然后在该视图上添加按钮。直接在单元格笔尖上添加按钮将使其隐藏在内容视图后面。

【讨论】:

【参考方案3】:

我应该使用 TableViewCell 而不是 View 创建一个 nib,它可以工作。非常感谢。 :)

【讨论】:

以上是关于无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中无法点击 UIButton

点击时无法更改 UItableViewCell 中按钮的图像

UITableViewCell点击事件无法响应问题

无法调整包含 UIView 的 UITableViewCell

用作自定义 UITableViewCell 的 XIB 中的自定义按钮不响应点击(ios7)

重新排序时无法从当前位置拖动 UITableViewCell