iOS侧滑返回手势冲突处理

遇到这样一个场景,本身页面vc.view添加了全屏侧滑返回手势,

但是页面中顶部有一个横向滚动的collectionView, 这个时候,我们

如果在页面总滑动横向滚动的collectionView的时候,就会执行横向collectionView的滚动,从而不执行侧滑返回的手势,这是我们不想要的结果,我们想要达到的效果是:如果我们开始滑动横向collectionView的时候,collectionView没有滑动到最左边,要正常的滑动横向collectionView,如果我们开始滚动的时候,collectionView已经滑动到最左边了,则我们希望响应侧滑手势,这样就达到了解决手势冲突的效果了

解决方案如下,自定义横向滚动collectionView类,重写手势代理方法

主要代码如下, 思路就是通过gestureRecognizerShouldBegin 方法

控制手势是否开始响应

- (BOOL)isPanBackAction:(UIGestureRecognizer *)gestureRecognizer
{
    //在最左边的时候 && 是pan手势,&& 手势往右拖拽
    if (self.contentOffset.x == - self.contentInset.left) {
        if (gestureRecognizer == self.panGestureRecognizer) {
            //根据速度判断拖动的方向
            CGPoint velocity = [self.panGestureRecognizer velocityInView:self.panGestureRecognizer.view];
            if (velocity.x > 0) {
                return YES;
            }
        }
    }
    return NO;
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if ([self isPanBackAction:gestureRecognizer]) {
        return NO;
    }
    return YES;
}
相关推荐
CocoaKier7 小时前
【手游出海】你知道吗?除了30%的“苹果税”,你还交了不少地区销售税
ios·apple
ZRD11128 小时前
iOS Swift UIKit 编程规范指南
ios·swift
ZRD111211 小时前
Swift flatMap 和 compactMap
ios·swift
Doris Liu.15 小时前
苹果“被盗设备保护”的取证意义
科技·程序人生·安全·ios·智能手机·系统安全·安全架构
ii_best16 小时前
【iOS15/16脚本】多巴胺越狱roothide模式iOS按键精灵安装方式
ios
书弋江山16 小时前
ios 小组件和数据共享
ios
木木黄木木2 天前
Theos环境搭建与XM文件开发指南,以及iOS弹窗源码分享
ios·c#
木木黄木木2 天前
iOS插件,Theos环境搭建与XM文件开发指南(完善版本)
ios
帅次2 天前
Flutter:StatelessWidget vs StatefulWidget 深度解析
android·flutter·ios·小程序·swift·webview·android-studio