當使用導航控制器跳轉到下個界面的時候,如果下個界面有靠左邊的UIScrollView會有UIScrollView的右劃手勢和系統右劃手勢的沖突,導致識別不到系統的右劃。
123.gif
解決方法:
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;
}
完成