4 votes

Comment mettre en pause/désactiver UILongPressGestureRecognizer sur un UITableViewCell en mode édition ?

Dans une tableview, j'ai sur chaque cellule un UILongPressGestureRecognizer que j'ajoute comme ceci :

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] 
                                          initWithTarget:self 
                                          action:@selector(TableCellLongPressed:)];
longPress.minimumPressDuration = 0.5f;
[cell addGestureRecognizer:longPress];
[longPress release];

J'ai maintenant le problème suivant : je veux que l'utilisateur puisse réorganiser la cellule dans le tableau. J'ai donc un bouton qui fait passer le tableau en mode édition, comme ceci :

[self.myTableView setEditing:!self.myTableView.editing animated:YES];

Maintenant, lorsque l'utilisateur essaie de faire glisser une cellule et ne la fait pas glisser assez loin, la presse longue déclenche son action, ce qui est très ennuyeux pour l'utilisateur car une autre vue est poussée. Comment puis-je mettre en pause ou désactiver la UILongPressGestureRecognizer lorsque le tableView est en EditMode ?

6voto

tarmes Points 6363

Vous devez implémenter le délégué UIGestureRecognizerDelegate pour cette méthode :

gestureRecognizer:shouldReceiveTouch :

Dans la méthode, vérifiez si vous êtes en train de modifier le tableau et renvoyez NO si c'est le cas.

Tim

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X