iOS橫向滾動的scrollView和系統pop手勢返回衝突的解決辦法
阿新 • • 發佈:2019-02-09
直接上解決辦法:
1.首先自定義一個scrollView,比如:CustomScrollView,遵守<UIGestureRecognizerDelegate>協議,然後在實現檔案中寫如下程式碼:
-(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; }
2.那個橫向滾動的scrollView繼承這個自定義scrollView,也就是CustomScrollView
原理:
scrollView的pan手勢會讓系統的pan手勢失效,所以我們只需要在系統手勢失效且scrollView的位置在初始位置的時候讓兩個手勢同時啟用就可以了