Swipe to Delete is not working properly in a Tableview. In viewDidLoad I have following code.
for (UIGestureRecognizer *gesture in _addressTblView.gestureRecognizers) {
if ([gesture isKindOfClass:[UIPanGestureRecognizer class]])
gesture.cancelsTouchesInView = YES;
gesture.delaysTouchesBegan = YES;
}
and I have implemented UIGestureRecognizer methods in my View Controller.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
return YES;
}
// For smooth swipe to delete in UITableView Cell, because Pan Gesture of Side Menu also competes.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
EKLog(@"gesture recognizer 1 %@", gestureRecognizer);
EKLog(@"gesture recognizer 2 %@", otherGestureRecognizer);
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
Whenever swipe to delete is performed one gesture succeeds and other fails.
**gesture recognizer 1** <UIScrollViewPanGestureRecognizer: 0x1022a2ed0; state = Ended; delaysTouchesBegan = YES; delaysTouchesEnded = NO; view = <UITableView 0x10292e800>; target= <(action=handlePan:, target=<UITableView 0x10292e800>)>>
**gesture recognizer 2** <UIScrollViewPanGestureRecognizer: 0x1022a8bc0; state = Failed; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <UITableViewWrapperView 0x102965000>; targets= <(
"(action=handlePan:, target=<UITableViewWrapperView 0x102965000>)",
"(action=handleSwipeBeginning:, target=<UITableViewWrapperView 0x102965000>)"
)>>
As seen in debug console, two gesture recognizer are competing for each other. Sometimes swipe to delete works and sometimes it doesnt. Please help. Thanks.