1. 程式人生 > >iOS橫向滾動的scrollView和系統pop手勢返回衝突的解決辦法

iOS橫向滾動的scrollView和系統pop手勢返回衝突的解決辦法

直接上解決辦法:

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的位置在初始位置的時候讓兩個手勢同時啟用就可以了