- 在项目开发中,我们经常会遇到自定义弹框,这时我们往往会再弹框后面加一个半透明黑色遮罩层,并给这个层添加一个点击手势,当点击这个层的时候隐藏自定义弹框。
但这么做有时会遇到一个问题,就是手指点击的位置在自定义弹框的内部,这是也会触发遮罩层的点击手势事件,那么这种情况该怎么办呢?
这是我们可以设置点击手势的代理方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
// 返回NO表示,手势事件不会根据响应者链传递,当前的touch对象会被忽略,相当于手势识别失败,然后就会走默认的touch系列回调方法
if ([touch.view isDescendantOfView:self.myContent]) {
return NO;
}
return YES;
}
- 有时我们在使用UITableView或UICollectionView的时候,有时会有手势冲突的情况,为了能解决这个问题,我们可以它们识别多个手势
同样也是实现代理方法:
// 这个代理方法返回YES,表示同时识别多个手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}