J'ai un UIView qui couvre tous les UITableView. UIView utilise des outils de reconnaissance des gestes pour contrôler ce que la table affiche. J'ai toujours besoin du défilement vertical UITableView et des taps de ligne. Comment les transmettre à la table depuis les reconnaisseurs de mouvements?Gesture Recognizers et TableView
Répondre
cédez votre geste à la vue de la table et la table prendra soin:
UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipeFrom:)];
[gesture setDirection:
(UISwipeGestureRecognizerDirectionLeft
|UISwipeGestureRecognizerDirectionRight)];
[tableView addGestureRecognizer:gesture];
[gesture release];
Ensuite, dans votre méthode d'action de geste, agir en fonction de la direction:
- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
[self moveLeftColumnButtonPressed:nil];
}
else if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
[self moveRightColumnButtonPressed:nil];
}
}
La table Ne passez que les gestes que vous avez demandés après les avoir manipulés en interne.
Cette est la bonne réponse. Mais pouvez-vous s'il vous plaît me dire comment connaître la tableview indexPath dans la méthode handleSwipeFrom? – dinesh
Cela ne fonctionnera pas - la propriété direction sur UISwipeGestureRecognizer indique quelles directions peuvent être reconnues (dans ce cas à gauche et à droite) et non dans quelle direction WAS a été glissé. Vous devrez séparer les identificateurs de mouvement –
Oui, recognizer.direction aura toujours 3 et ne correspondra jamais. C'est sans doute un bug: http://stackoverflow.com/questions/3319209/setting-direction-for-uiswipegesturerecognizer – Symmetric
Si vous avez besoin de savoir indexPath de votre cellulaire:
- (void)handleSwipeFrom:(UIGestureRecognizer *)recognizer {
CGPoint swipeLocation = [recognizer locationInView:self.tableView];
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:swipeLocation];
UITableViewCell *swipedCell = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
}
Cela a été répondu précédemment à UIGestureRecognizer and UITableViewCell issue.
J'ai essayé la suggestion de Rob Bonner et ça marche très bien. Je vous remercie.
Mais, dans mon cas, il y a un problème de reconnaissance de direction. (recognizer.direction se réfèrent toujours à 3) J'utilise IOS5 SDK et Xcode 4.
Cela semble provoqué par "[gesture setDirection: (left | right)]" Je pense. Donc, si quelqu'un a un problème comme moi et que vous voulez reconnaître le balayage de gauche et de droite séparément, alors assignez deux reconnaissances à la vue de table avec des directions différentes.
Comme ceci:
UISwipeGestureRecognizer *swipeLeftGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleSwipeLeft:)];
[swipeLeftGesture setDirection: UISwipeGestureRecognizerDirectionLeft];
UISwipeGestureRecognizer *swipeRightGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleSwipeRight:)];
[swipeRightGesture setDirection: UISwipeGestureRecognizerDirectionRight];
[tableView addGestureRecognizer:swipeLeftGesture];
[tableView addGestureRecognizer:swipeRightGesture];
et action geste ci-dessous:
- (void)handleSwipeLeft:(UISwipeGestureRecognizer *)recognizer {
[self moveLeftColumnButtonPressed:nil];
}
- (void)handleSwipeRight:(UISwipeGestureRecognizer *)recognizer {
[self moveRightColumnButtonPressed:nil];
}
I codé avec fonction ARC alors si vous ne l'utilisez ARC, ajouter des codes de libération.
PS: Mon anglais est pas si bon, donc s'il y a une erreur sentential, la correction sera très heureux :)
- 1. Fling Gesture, Webview et Android
- 2. Fling Gesture et Webview dans Android
- 3. Touch Gesture sur CALayer
- 4. UITextView Swipe Gesture
- 5. Android Gesture Directions
- 6. TableView avec défilement et balayage
- 7. application iphone, tableView et appStore
- 8. TableView et les cellules personnalisées
- 9. Comment détecter Swipe Gesture dans iPhone SDK?
- 10. Silverlight Windows Phone 7: événements Gesture?
- 11. pousser plusieurs vues de TableView à Tableview
- 12. NSString et un texte de cellule TableView
- 13. Affichage chaîne et nombre ensemble dans tableview
- 14. Admob dans l'iPhone avec Tabbar et TableView
- 15. TableView ne s'affiche pas correctement et plante,
- 16. Appel Tableview
- 17. TableView Portable
- 18. TableVIew Problème
- 19. Panne d'écran lors de l'exécution de Pinch Gesture sur MPMoviePlayerController
- 20. WPF key gesture PageDown apparaît comme Next dans le menu
- 21. Existe-t-il une bibliothèque ActionScript Gesture gestuelle/API
- 22. Obtenir tableView: heightForRowAtIndexPath: se produire après tableView: cellForRowAtIndexPath:?
- 23. NSMutableArray + tableView + SQLite
- 24. Personnaliser Vide TableView
- 25. TableView Row Problème sélectionné
- 26. Iphone: TabView + TableView
- 27. tableview coredata objet temporaire
- 28. tableView sortDescriptorsDidChange: pas appelé
- 29. supprimer dans tableView
- 30. Préférences comme TableView
Je crois « [geste tablView] » devrait être « [yourTableView addGestureRecognizer: geste] » –