在同一个控制器中使用tableview和tap手势进行对tableview的隐藏时,tableview的cell点击会与tap手势发生冲突,只响应tap手势不相应cell的点击方法
解决方法如下:
对tap手势添加代理:
let Tap = UITapGestureRecognizer(target: self, action: #selector(TapCallBack))
Tap.delegate=self
在代理方法中使用isDescentdant方法去判断当前点击的视图是否包含在父试图中,若包含在其中则不相应tap方法,但要注意的是,控制器本身的view也包含在自身中,所以要对view进行筛选,剔除控制器view:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
//判断点击视图是否被主视图包含
if (touch.view?.isDescendant(of: self.view))!{
if touch.view == self.view{return true}
return false
}
return true
}
这样冲突问题就解决了
网友评论