iOSUIScrollView、UICollectionView

2018-11-06  本文已影响0人  哈哈哈努力加油吧

UICollectionView父类是UIScrollView,所以UICollectionView手势返回冲突解决同理

一:

首先写一个基础类,然后让手势继续往下响应

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer{

    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]&&[otherGestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]] ) {

        returnYES;

    }else{

        returnNO;

    }

}

然后在VC中调用这个类,再在UIScrollView代理中判断是否把手势返回设置成YES或NO就可以了

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

    if (self.scrollview.contentOffset.x!=0) {

        self.navigationController.interactivePopGestureRecognizer.enabled = NO;

    }else{

        self.navigationController.interactivePopGestureRecognizer.enabled = YES;

    }

}

二:

(这个方法是我在其他帖子学到的(侧滑手势与UIScrollView滚动手势冲突解决))更快捷方便

UIScrollView内是有多个手势的,其中与侧滑冲突的就是UIScreenEdgePanGestureRecognizer这个手势,把它ToFail就可以了。

NSArray *gestureArray = self.navigationController.view.gestureRecognizers;

for (UIGestureRecognizer *gestureRecognizer in gestureArray) {

    if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {

        [scrollView.panGestureRecognizer requireGestureRecognizerToFail:gestureRecognizer];

    }

}

建议使用第二个方法,因为第二个方法无论UIScrollView滑动到什么位置,都可以直接返回,而第一个方法只能在x==0的位置返回收拾才有响应

上一篇 下一篇

猜你喜欢

热点阅读