当前位置: 首页 > article >正文

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;
}

http://www.kler.cn/a/576948.html

相关文章:

  • “Predict”和“Foresee”的区别
  • Windows 虚拟化架构解析:WSL 与 Hyper-V 及其对 Docker 部署的影响
  • 数据库事务的 ACID,通过MVCC能做什么
  • 线程的常见使用方法
  • K8S学习之基础十七:k8s的蓝绿部署
  • 分布式光伏发电的发展现状与前景
  • 【多模态感知的神经科学启示】
  • 手写识别革命:Manus AI如何攻克多语言混合识别难题(二)
  • deepin安装rust
  • 2025-03-08 学习记录--C/C++-PTA 习题10-2 递归求阶乘和
  • docker指令整理
  • 图片分类实战:食物分类问题(含半监督)
  • 【统计至简】【入门测试3】协方差矩阵的Cholesky分解
  • Qwen架构与Llama架构的核心区别
  • Sass进阶之路:@forward 的可见性控制与变量覆盖
  • Linux 配置静态 IP
  • spring websocket 介绍
  • create_react_agent(model, tools) 和 graph_builder.add_conditional_edges 的联系和区别
  • 基于Django的协同过滤算法养老新闻推荐系统的设计与实现
  • 初识Linux(13) 由基础IO知识简易封装stdio.h中的FILE