1

我有一个表格视图,它在每个 TableView 单元格中有一个 UIImage 和一些 UIButton 对象。当我滚动表格视图时,它总体上工作得很好。但是,如果我触摸其中一个 UIButton 项目来滚动表格视图,则 UIButton 似乎会窃取触摸并且表格视图不会滚动。相反,UIButton 项目似乎被选中。即使用户在开始滚动时触摸按钮,我也希望能够滚动表格视图。所以,我在这里搜索了解决方案,尝试了以下方法。

extension UITableView {

    override public func touchesShouldCancel(in view: UIView) -> Bool {

        print("the touchesShouldCancel function is called.")

        if view is UIButton {
            return true
        }

        return super.touchesShouldCancel(in: view)
    }

}

但是,它不起作用。每当我滚动表格视图时,甚至都不会调用该函数。我在这里想念什么?非常感谢您的意见。谢谢大家。

4

2 回答 2

1

你需要创建一个UITableView 子类

class SubTbl:UITableView {
   // add your method
}

然后将其分配给 IB 中的该表或在代码中使用它

于 2020-07-11T19:42:14.417 回答
1

子类根据Apple 文档UITableView将 tableView 设置canCancelContentTouchestrue

如果 canCancelContentTouches 属性的值为 false,则滚动视图不会调用此方法

class YourTableView:UITableView {

    override func awakeFromNib() {
        canCancelContentTouches = true
        delaysContentTouches = false
    }

    override func touchesShouldCancel(in view: UIView) -> Bool {
        
    }
}
于 2020-07-11T19:44:47.257 回答