当使用导航控制器跳转到下个界面的时候,如果下个界面有靠左边的UIScrollView会有UIScrollView的右划手势和系统右划手势的冲突,导致识别不到系统的右划。
解决方法:
Step1:自定义ScrollView遵守UIScrollViewDelegate。
Step2:重写shouldRecognizeSimultaneouslyWithGestureRecognizer 方法,返回值是否识别两个手势。
当是系统的手势的时候识别,普通scrollView的手势不识别。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
// 首先判断otherGestureRecognizer是不是系统pop手势
if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) {
// 再判断系统手势的state是began还是fail,同时判断scrollView的位置是不是正好在最左边
if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && self.contentOffset.x == 0) {
return YES;
}
}
return NO;
}
完成