当用户点击View Controller中的任何UITableViewCell时,View Controller中基本视图的UITapGestureRecognizer会捕获触摸事件。我可以通过向UITapGestureRecognizer实例添加委托并过滤掉UITableViewCell来解决此问题。
但是,我不明白为什么UITapGestureRecognizer不会影响View Controller的按钮。
我添加了一个与IBAction链接的按钮
@IBAction func buttonAction(_ sender: Any) {
print("buttonAction")
}
以及使用UITapGestureRecognizer的基本视图
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(baseViewTapAction)))
@objc func baseViewTapAction() {
print("baseViewTapAction")
}
以及带有UITableViewCell的UITableView
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("UITableViewCell")
}
结果是: 点击UIButton:
buttonAction
点击baseView:
baseViewTapAction
点击UITableViewCell:
baseViewTapAction