最近项目中遇到一个问题,类似于今日头条中的页面切换,在某个页面当中会有一些视频播放器。出现的问题是播放器控制条滑动的时候会优先响应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;
}