关于手势之间的冲突的解决方法

本文详细介绍了在iOS应用中使用UINavigationController时遇到屏幕滑动手势冲突的问题,通过设置手势重叠时的触发优先级,成功解决了UIScrollView自带滑动手势屏蔽UIScreenEdgePanGestureRecognizer的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说下,产生冲突的背景.我的主界面是个UINavigationController,我给导航控制器添加了个UIScreenEdgePanGestureRecognizer,设置滑动边界为左边界.代码如下:

  panGes = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(onSlideEdgeGes:)];

        [navigationController.view addGestureRecognizer:panGes];

        panGes.edges = UIRectEdgeLeft;

然后我在主界面添加了个UIScrollView,ScrollView自带滑动手势会屏蔽panGes的手势.

解决方法:通过设置手势重叠的时候的触发优先级()

CGRect headViewRect = CGRectMake(0, 0, CGRectGetWidth(APPRECT),CGRectGetHeight(self.view.frame) - FOOTERVIEW_HEIGHT);

    headScrollView = (CustomScrollView *)initScrollViewWithClass([CustomScrollView class],self.view, headViewRect, self, CGSizeMake(deviceArrs.count * CGRectGetWidth(headScrollView.frame), CGRectGetHeight(headScrollView.frame)), YES);

    headScrollView.pagingEnabled = YES;

    headScrollView.bounces = FALSE;

    headScrollView.showsVerticalScrollIndicator = FALSE;

关键代码:headScrollView的手势和panges重合时panges优先

    [headScrollView.panGestureRecognizer requireGestureRecognizerToFail:appDelegate.rootNavigtionManager.panGes];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值