美文网首页
解决UIScrollView上子视图手势无法识别问题

解决UIScrollView上子视图手势无法识别问题

作者: 綪天de汰陽 | 来源:发表于2016-12-02 11:33 被阅读0次

    最近项目中遇到一个问题,一个界面底部是一个UIScrollView,UIScrollView上放的是UICollectionView,UICollectionView的cell上放的有播放器,当播放时发现播放器上的 UISlider 控件无法拉动,必须按着UISlider0.5s左右才能拉动,为了解决这个问题在网上找了很多方法,都是模糊不清,最后参照网上的方法自己无意解决了这个问题。

    网上找到的方法是先自定义一个UIScrollView,把 UIScrollView 的delaysContentTouches 设置为 NO,canCancelContentTouches 设置为YES,然后再在自定义的UIScrollView中重写  - (BOOL)touchesShouldCancelInContentView:(UIView *)view方法就可以解决手势无法识别问题。但是如果一个视图中包含了多个重叠的 UIScrollView 的话,每个UIScrollView都必须实现此方法才能生效。

    我的视图因为包含了UIScrollView,UICollectionView(继承UIScrollView),所以UIScrollView、UICollectionView都必须实现以上方法,我的解决方法 

    _bgScrollView = [[BaseHomeScrollerView alloc] initWithFrame:CGRectMake(0, DEVICE_64 + DEVICE_44, DEVICE_WIDTH, DEVICE_HEIGHT - DEVICE_64 - DEVICE_44)];

    _bgScrollView.delaysContentTouches = NO;

    _bgScrollView.canCancelContentTouches = YES;

    HomePageCollectionView *listView = [[HomePageCollectionView alloc] initWithFrame:CGRectMake(DEVICE_WIDTH * i, 0, DEVICE_WIDTH, self.bgScrollView.frame.size.height) collectionViewLayout:layout];

    listView.delaysContentTouches = NO;

    listView.canCancelContentTouches = YES;

    (HomePageCollectionView是放在BaseHomeScrollerView上的,所以都要重写- (BOOL)touchesShouldCancelInContentView:(UIView *)view方法)

    然后运行,播放器上的UISlider就可以轻松的拉动了

    相关文章

      网友评论

          本文标题:解决UIScrollView上子视图手势无法识别问题

          本文链接:https://www.haomeiwen.com/subject/dcnwsttx.html