博客> iOS父View添加Tap手势,防止点击子View触发父View手势
iOS父View添加Tap手势,防止点击子View触发父View手势
2017-11-20 20:19 评论:0 阅读:123 梧桐一叶
子视图 UITapGestureRecognizer 父视图

在开发工程中,我们经常会遇到给父View添加Tap手势,但是我们又不想点击它上面的子view时触发该tap手势, IMG_7821.PNG 这个是我项目中的一个界面,我在半透明背景上添加一个tap手势,但是我不想点击后缀列表触发半透明背景上的手势,我的处理如下: 大家知道UITapGestureRecognizer有一个代理UIGestureRecognizerDelegate,给手势设置代理,代码如下 let tapGesture = UITapGestureRecognizer.init(target: self, action: #selector(hideView)) tapGesture.delegate = self vBackground.addGestureRecognizer(tapGesture)

同时实现代理方法: ///MARK - UIGestureRecognizerDelegate func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { if touch.view?.isDescendant(of: collectionView) == true { return false } return true } 图中的后缀列表是collectionView,在这个代理方法中,我只要判断touch.view的子孙是不是collectionView,如果是,返回false,不是,则返回true.类似情况可完美解决

大家还可以参考下面这篇简书文章,更简单易懂http://www.jianshu.com/p/6a31fafa1ca3

收藏
1
sina weixin mail 回到顶部