0

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.

Manoj Karki
  • 270
  • 2
  • 10

0 Answers0