tableviewcell 内的 UIButton 触发单元格而不是按钮 [重复]

Posted

技术标签:

【中文标题】tableviewcell 内的 UIButton 触发单元格而不是按钮 [重复]【英文标题】:UIButton inside tableviewcell triggers cell instead of button [duplicate] 【发布时间】:2018-02-08 16:35:24 【问题描述】:

我有一个UITableViewCell,里面有一个按钮。 (通过 IB 制作)。

现在我想做的是:

    按下UITableViewCell时,我想触发segue。 按下UIButton 时,我想触发一个动作。

然而,实际发生的是当按下按钮时UITableViewCell 被选中,而不是期望的结果。

有没有办法同时启用这两个操作?

谢谢。

-- 编辑

我希望能够仍然选择表格单元格,并且能够按下按钮。所以禁用选择是行不通的。

-- 根据要求,cellForRowAt: 方法的代码

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: PersonTableViewCell.identifier, for: indexPath) as! PersonTableViewCell

    if ( indexPath.row < (self.searchResult.count)) 
        cell.configure(searchResult[indexPath.row])
    

    return cell

然后,在cell的配置函数内部,在触发以下函数的按钮上创建一个UITapGestureRecognizer

func follow(profile: User) 
    self.followButton.isSelected = !self.followButton.isSelected
    profile.toggleFollow(callback:  _ in )

【问题讨论】:

@the4kman 我编辑了这个问题。 【参考方案1】:

确保单元格内的按钮遵循以下几点。

    为您的按钮启用了用户交互 按钮具有适当的框架大小(可点击区域) 一个有效的按钮动作被分配/连接到按钮 按钮是最顶部的视图(没有其他视图覆盖按钮)

显示cellForRow(atIndex... 的代码和表格视图单元格类以获得准确的解决方案。

这里是示例代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomCell
    cell.yourbutton.isUserInteractionEnabled = true
    cell.yourbutton.addTarget(self, action: #selector(self.buttonTapped(sender:)), for: UIControlEvents.touchUpInside)

    //cell.bringSubview(toFront: cell.yourbutton)
    //cell.contentView.bringSubview(toFront: cell.yourbutton)

    return cell



@objc func buttonTapped(sender: UIButton) 
    print("button tapped")

编辑:按钮有自己的控制动作/事件处理程序。您可能不需要添加UITapGestureRecognizer

【讨论】:

我已经添加了您要求的代码。

以上是关于tableviewcell 内的 UIButton 触发单元格而不是按钮 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我在 CollectionViewCell 内有一个 UIButton,它又在 TableViewCell 内。如何通过单击 UIButton 导航到下一个视图控制器?

在 TableViewCell 内单击时 UIButton 标签重置

TableViewCell VoiceOver 辅助功能中的 UIButton

如何在 ios 中使用图案图像在可扩展的 tableViewCell 中设置 UIButton

未调用 TableViewCell 内的 UIPickerView 委托

TableViewCell 内的 CollectionView