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;
}
相关推荐
徐同保2 小时前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918417 小时前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007478 小时前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵20 小时前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte11 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone
rose and war1 天前
python和jinja版本问题导致的访问报500
python·ios
fendoudexiaoniao_ios1 天前
iOS 列表拖拽cell排序
ios·swift
2501_915106321 天前
当 Perfdog 开始收费之后,我重新整理了一替代方案
android·ios·小程序·https·uni-app·iphone·webview
2501_915918411 天前
中小团队发布,跨平台 iOS 上架,证书、描述文件创建管理,测试分发一体化方案
android·ios·小程序·https·uni-app·iphone·webview
家里有只小肥猫1 天前
uniApp打包ios报错
ios·uni-app