Comment détecter un tap & sur un UITableViewCell
?Détection du tap & hold dans les cellules UITableView
Répondre
Dans iOS 3.2 ou une version ultérieure, vous pouvez utiliser UILongPressGestureRecognizer
Vous devriez probablement gérer la UIControlTouchDown événement et en fonction de ce que vous entendez par « hold », tirer un NSTimer qui comptera un intervalle sont écoulées depuis le contact et invalider lors de la cuisson ou de libérer le contact (UIControlTouchUpInside et UIControlTouchUpOutside événements). Lorsque la minuterie se déclenche, vous avez détecté votre "prise &".
Voici le code extrait directement de mon application. Vous devez ajouter ces méthodes (et un membre _cancelTouches booléen) à une classe dérivée de UITableViewCell.
-(void) tapNHoldFired {
self->_cancelTouches = YES;
// DO WHATEVER YOU LIKE HERE!!!
}
-(void) cancelTapNHold {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tapNHoldFired) object:nil];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self->_cancelTouches = NO;
[super touchesBegan:touches withEvent:event];
[self performSelector:@selector(tapNHoldFired) withObject:nil afterDelay:.7];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self cancelTapNHold];
if (self->_cancelTouches)
return;
[super touchesEnded:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
[self cancelTapNHold];
[super touchesMoved:touches withEvent:event];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[self cancelTapNHold];
[super touchesCancelled:touches withEvent:event];
}
Vous ne devez jamais utiliser un code comme celui-ci self -> _ cancelTouches = YES; Au lieu d'utiliser simplement self.cancelTouches = YES; et déclarer la propriété privée – Igor
Quelle est cette syntaxe "-> _"? Je ne l'ai jamais vu avant :) –
//Add gesture to a method where the view is being created. In this example long tap is added to tile (a subclass of UIView):
// Add long tap for the main tiles
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTap:)];
[tile addGestureRecognizer:longPressGesture];
[longPressGesture release];
-(void) longTap:(UILongPressGestureRecognizer *)gestureRecognizer{
NSLog(@"gestureRecognizer= %@",gestureRecognizer);
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
NSLog(@"longTap began");
}
}
- 1. Événement Tap-And-Hold sur ScatterViewItem
- 2. UITableView/UITableViewCell réponse d'événement tap?
- 3. Détection de UITableView scrolling
- 4. Sélectionnez toutes les cellules dans UITableView
- 5. Comment puis-je obtenir la valeur du délai pour le tap-and-hold sur Windows Mobile?
- 6. Récupération de cellules dans UITableView
- 7. Passthrough tap de uitableview to superview
- 8. Personnalisé UITableView (cellules UIView +)
- 9. UITableView défilement pour les très grandes cellules
- 10. UITableView - ajouter des cellules
- 11. Comment puis-je implémenter le comportement "tap and hold" dans un MFC CListCtrl?
- 12. reloadData de UITableView n'utilise pas les cellules
- 13. Personnalisation de l'ordre des cellules dans UITableView?
- 14. Deux cellules dans une rangée, UITableview
- 15. Plusieurs cellules par ligne dans UITableView
- 16. cellules de format iPhone + UITableView +
- 17. personnalisé question des cellules uitableview
- 18. UITableView montre quelques cellules éclateurs
- 19. Cellules de chargement UITableView inversées
- 20. Geste "Tap-And-Hold" sur ScatterViewItem avec Surface Toolkit pour Windows 7
- 21. uitableview chargement des cellules avec le contenu des cellules précédentes
- 22. IPHONE - détection du glissement horizontal du doigt sur une cellule UITableView
- 23. cellules UITableView ne peuvent pas être sélectionnées
- 24. force UITableView pour vider toutes les cellules réutilisables
- 25. uiscrollview scrollViewWillBeginDragging gâche les cellules personnalisées uitableview hauteur
- 26. Redimensionner les cellules lors de la rotation UITableView
- 27. UITableView avec des cellules de largeur variable
- 28. Les cellules UITableView se chargent correctement au début mais changent
- 29. L'en-tête de section personnalisée UITableView apparaît sous les cellules
- 30. Problème étrange de disparition des cellules contenant UITextFields dans UITableView
Je suis peut de ne pas assez expert pour venir de cette réponse au code réel ... Mais je veux dire en maintenant enfoncé le même comportement dans Safari mobile lorsque vous tapez et maintenez une URL pour afficher une feuille d'action pour afficher les options concernant cette URL – JFMartin