SWRevealViewController et TableView – glisser pour supprimer ne fonctionne pas

J'ai ajouté le SWRevealViewController à mon application, avec la stack hamburger pour accéder à mon menu. Mon application a un UITableView pour la vue de l'application principale. Je souhaite autoriser les users à supprimer des éléments de la list en utilisant la fonction de balayage pour supprimer.

J'ai activé le balayage pour supprimer et ajouté un appel de méthode pour gérer cela. J'ai remarqué que la méthode n'est jamais appelée. Je ne sais pas comment faire pour que cela fonctionne.

Toute aide serait grandement appréciée.

On m'a demandé un exemple de code. Je n'ai apporté aucune modification au code source standard de SWRevealViewController. Dans mon code pour TableView, j'ai ajouté ce qui suit:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } 

Normalement, le code ci-dessus devrait afficher un button de suppression lorsque vous faites un balayage de droite à gauche. Cependant, cela ne se produit pas. Ma conjecture est que le controller SWRevealViewController est en train de manger le système de reconnaissance gestuelle.

Juste trouvé une solution après avoir lu un fil d'un gars posant une question similaire à l'auteur de cette class. Quelle que soit la class que vous utilisez pour append les reconnaisseurs de gestes, faites-en le délégué du SWRevealController puis collez-la dans cette méthode.

 #pragma mark - SWRevealViewControllerDelegate - (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController { float velocity = [revealController.panGestureRecognizer velocityInView:self.view].x; if (velocity < 0 && self.revealViewController.frontViewPosition == FrontViewPositionLeft) return NO; else return YES; } 

J'ai fait comme ce <UIGestureRecognizerDelegate> dans le file .h dans lequel vous implémentez la fonctionnalité de suppression de cellule tableview et dans le file .m viewDidLoad

 [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; self.revealViewController.panGestureRecognizer.delegate = self; 

Après cela, utilisez simplement cette méthode

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([NSSsortingngFromClass([touch.view class]) isEqualToSsortingng:@"UITableViewCellContentView"]) return NO; else return YES; }