UIScrollView 滑动手势冲突解决方案

最近项目中遇到一个问题,类似于今日头条中的页面切换,在某个页面当中会有一些视频播放器。出现的问题是播放器控制条滑动的时候会优先响应scrollview的panGesture事件,导致页面直接切而不能正常响应播放器的滑动条的滑动事件。

网上的解决方案是这样的:

- (BOOL)touchesShouldBegin:(NSSet*)touches withEvent:(nullableUIEvent*)event inContentView:(UIView*)view{

returnYES;

}

- (BOOL)touchesShouldCancelInContentView:(UIView*)view

{

        if([view isKindOfClass:[ProcessView class]]) {

          returnNO;

         } 

returnYES;

}


但是实验证明并不能解决问题,后来又整个研究了下iOS事件的传递和UIScrollView的手势响应方式(后面会写一篇专门分析手势传递的文章)结果如下

直接上解决方案:

- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch{

           if([touch.view isKindOfClass:[ProcessView class]]) {

            returnNO;

             }

        returnYES;

}

解释:提前阻断UIScrollView的panGesture事件响应 实验证明 不会影响左右滑动页面的切换。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容