手勢衝突---UITableView刪除, 自定義側滑返回,UIScroll的手勢衝突
阿新 • • 發佈:2019-02-12
返回手勢和UITableView刪除的衝突
今天遇到一個手勢衝突的問題在這裡記錄一下
由於還要適配ios6 所以就從網上找了個側滑返回的類
但是這個類手勢和UITableView的滑動刪除是有衝突的 所以UITableView的手勢被幹掉了(原生的UINavigationcontroller不會)
解決辦法就是寫個scrollView的category重寫
判斷是否是pan手勢如果是讓其他的pan手勢同時響應 這樣既能響應返回的那個返回的pan手勢 又能響應UITableView上的pan手勢#import "UIScrollView+AllowPanGestureEventPass.h" @implementation UIScrollView (AllowPanGestureEventPass) - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] || [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] ) { return YES; } return NO; } @end
但是這麼寫會影響你專案中的其他UIScrollView 而且會出現右滑撤銷刪除和右滑返回的一起執行
而我比較希望的是 在這個VC裡面的是側滑的區域變小一點別影響我撤銷刪除的操作
所以我就這麼改
#pragma mark - UIGestureRecognizerDelegate - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if (self.viewControllers.count <= 1 || !self.canDragBack) return NO; if ([[self.viewControllers lastObject] isKindOfClass:[CollisionGestureViewController class]]) { CGPoint point = [gestureRecognizer locationInView:self.view]; NSLog(@"%@", NSStringFromCGPoint(point)); if (point.x < self.view.frame.size.width / 3) { return YES; } else { return NO; } return NO; } return YES; }
這裡面還有一個其他的例子介紹手勢衝突的
http://blog.csdn.net/wsxzk123/article/details/44229559