最近項(xiàng)目中遇到一個(gè)問題窿锉,一個(gè)界面底部是一個(gè)UIScrollView,UIScrollView上放的是UICollectionView,UICollectionView的cell上放的有播放器酌摇,當(dāng)播放時(shí)發(fā)現(xiàn)播放器上的 UISlider 控件無法拉動(dòng),必須按著UISlider0.5s左右才能拉動(dòng)嗡载,為了解決這個(gè)問題在網(wǎng)上找了很多方法窑多,都是模糊不清,最后參照網(wǎng)上的方法自己無意解決了這個(gè)問題洼滚。
網(wǎng)上找到的方法是先自定義一個(gè)UIScrollView埂息,把 UIScrollView 的delaysContentTouches 設(shè)置為 NO,canCancelContentTouches 設(shè)置為YES遥巴,然后再在自定義的UIScrollView中重寫? - (BOOL)touchesShouldCancelInContentView:(UIView *)view方法就可以解決手勢無法識(shí)別問題千康。但是如果一個(gè)視圖中包含了多個(gè)重疊的 UIScrollView 的話,每個(gè)UIScrollView都必須實(shí)現(xiàn)此方法才能生效铲掐。
我的視圖因?yàn)榘薝IScrollView拾弃,UICollectionView(繼承UIScrollView),所以UIScrollView摆霉、UICollectionView都必須實(shí)現(xiàn)以上方法豪椿,我的解決方法?
_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方法)
然后運(yùn)行,播放器上的UISlider就可以輕松的拉動(dòng)了