CODEétat de sélection d'arrière-plan UITableViewCell flips avant le geste se termine
J'ai un code qui ajoute un UILongPressGestureRecognizer
geste de reconnaissance appelé _recognizer
à une sous-classe d'un UITableViewCell
appelé cell
:
...
UILongPressGestureRecognizer *_recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(cellLongPressRecognized:)];
_recognizer.allowableMovement = 20;
_recognizer.minimumPressDuration = 1.0f;
[[cell contentView] addGestureRecognizer:_recognizer];
[_recognizer release];
...
Le sélecteur -cellLongPressRecognized:
simplement enregistre lorsque le geste se termine:
- (void) cellLongPressRecognized:(id)_sender {
if (((UILongPressGestureRecognizer *)_sender).state == UIGestureRecognizerStateEnded)
ALog(@"[MyViewController] -cellLongPressRecognized: gesture ended...");
}
Ma console affiche un message de journal quand je tape, maintenir et libérer une cellule:
[MyViewController] -cellLongPressRecognized: gesture ended...
Jusqu'à présent, si bon.
NUMÉRO
Le problème est que le fond de la cellule de table reste sélectionnée aussi longtemps que 1,0 secondes, la propriété _recognizer.minimumPressDuration
.
Si je maintiens le doigt sur l'appareil pendant plus de 1,0 seconde, l'arrière-plan de la cellule revient du style de sélection UITableViewCellSelectionStyleBlue
à son arrière-plan habituel, opaque et non sélectionné.
Pour vous assurer que seul le code spécifique à un geste est impliqué dans ce problème, j'ai désactivé -tableView:didSelectRowAtIndexPath:
lors du test.
QUESTION
Comment garder l'arrière-plan sélectionné indéfiniment, retournée en arrière que lorsque le geste « long presse » se termine?