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事件响应 实验证明 不会影响左右滑动页面的切换。

你可能感兴趣的:(UIScrollView 滑动手势冲突解决方案)