最近項(xiàng)目中遇到這個(gè)問題,controller里面多個(gè)tableview、scrollview,從而導(dǎo)致系統(tǒng)右滑手勢失效,想到一個(gè)簡單辦法來避免即可。
1.首先自定義一個(gè)scrollView,比如:CustomScrollView,遵守協(xié)議,然后在實(shí)現(xiàn)文件中寫如下代碼:
重寫這個(gè)方法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
? ? // 首先判斷otherGestureRecognizer是不是系統(tǒng)pop手勢
? ? if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) {
? ? ? ? // 再判斷系統(tǒng)手勢的state是began還是fail,同時(shí)判斷scrollView的位置是不是正好在最左邊
? ? ? ? if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && self.contentOffset.x == 0) {
? ? ? ? ? ? return YES;
? ? ? ? }
? ? }
? ? return NO;
}
2.那個(gè)橫向滾動(dòng)的scrollView繼承這個(gè)自定義scrollView,也就是CustomScrollView。
【原理:scrollView的pan手勢會(huì)讓系統(tǒng)的pan手勢失效,所以我們只需要在系統(tǒng)手勢失效且scrollView的位置在初始位置的時(shí)候讓兩個(gè)手勢同時(shí)啟用就可以了】