场景
今天在在一个viewA里addSubview一个tableView,然后在viewA里加手势tapGesture.
问题
tableView里的点击事件不能回调,点击事件只回应viewA里的点击事件.
解决办法
1.增加delegate
gesture.delegate = self
2.实现代理方法
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
return !tableView!.bounds.contains(touch.location(in: selectedTableView))
}
解释:只回应不在tableView范围内里的touch.如果不在tableView范围内就返回true,否则false
其它
上面的是只有一个手势是自定义的(viewA),另一个手势不是自定义的(tableView)
如果是两个手势都是自定义的(viewA,viewB)
可能可以用以下的delegate方法实现(没证实,看字面意思就是为了解决两个手势冲突)
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
}
长按?
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive press: UIPress) -> Bool {
}








网友评论