未调用UITableView的触摸应取消功能



我有一个表视图,在每个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)
}
}

然而,它不起作用。每当我滚动表格视图时,函数甚至不会被调用。我在这里错过了什么?我将非常感谢你的意见。谢谢大家。

子类UITableView根据Apple文档将表视图canCancelContentTouches设置为true

如果canCancelContentTouches属性为false

class YourTableView:UITableView {
override func awakeFromNib() {
canCancelContentTouches = true
delaysContentTouches = false
}
override func touchesShouldCancel(in view: UIView) -> Bool {

}
}

您需要制作一个UITableView子类

class SubTbl:UITableView {
// add your method
}

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

最新更新