美文网首页
iOSUIScrollView、UICollectionView

iOSUIScrollView、UICollectionView

作者: 哈哈哈努力加油吧 | 来源:发表于2018-11-06 11:55 被阅读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的位置返回收拾才有响应

相关文章

网友评论

      本文标题:iOSUIScrollView、UICollectionView

      本文链接:https://www.haomeiwen.com/subject/leayxqtx.html