Appuyez longuement sur la UITableView
Je voudrais gérer un appui long sur un UITableViewCell
pour imprimer un "accès rapide menu".
Quelqu'un a déjà fait cela?
Particulièrement le geste à reconnaître sur UITableView
?
Vous devez vous connecter pour publier un commentaire.
Ajouter d'abord le long de la presse geste de reconnaissance à la vue de la table:
Puis dans le geste gestionnaire:
Vous devez être prudent avec ce, afin de ne pas interférer avec l'utilisateur normal à l'écoute de la cellule et à noter également que
handleLongPress
feu à plusieurs reprises (ce sera dû à la geste de reconnaissance de l'état de changements).if (gestureRecognizer.state == UIGestureRecognizerStateBegan) ...
.UITableView
, pas laUITableViewCell
...)lpgr.allowableMovement
didSelect
est déjà là ? comment prévenir si longtemps de presse est en cours d'exécution ou de la cellule juste tapé ?J'ai utilisé Anna-Karenine réponse, et cela fonctionne très bien avec un très sérieux problème.
Si vous êtes à l'aide de sections, une pression longue sur le titre de la section va vous donner un mauvais résultat en appuyant sur la première rangée de la section, j'ai ajouté une version fixe ci-dessous (y compris le filtrage de mannequin d'appels basé sur le geste de l'état, par Anna-Karenine suggestion).
Ici sont précisées à l'instruction combinant l'Aube de la Chanson de réponse et Marmor de réponse.
Glisser une pression longue sur le Geste de Reconnaissance et de le déposer dans votre Cellule de Tableau. Il saute à bas de la liste sur la gauche.
Puis connectez le geste de reconnaissance de la même manière que vous vous connectez sur un bouton.
Ajoutez le code de Marmor dans l'action gestionnaire
}
Réponse rapide 5 (Suite de Ricky réponse rapide)
Semble être plus efficace pour ajouter de la reconnaissance directement à la cellule comme indiqué ici:
Appuyez sur&Tenir pour TableView Cellules, hier et aujourd'hui
(faites défiler jusqu'à l'exemple du bas)
Réponse rapide:
Ajouter le délégué
UIGestureRecognizerDelegate
à votre UITableViewController.Dans UITableViewController:
Et la fonction:
J'ai mis en place un peu de la catégorie sur UITableView basé sur Anna Karénine est une excellente réponse.
Comme cela, vous aurez une commode méthode du délégué comme vous en avez l'habitude lorsqu'ils traitent avec des régulière des vues de table. Check it out:
Si vous voulez l'utiliser dans un UITableViewController, vous avez probablement besoin de sous-classe et de se conformer au nouveau protocole.
Il fonctionne très bien pour moi, espérons que cela aide les autres!
Swift 3 réponse, en utilisant la syntaxe moderne, en incorporant d'autres réponses, et en éliminant inutile de code.
Juste ajouter UILongPressGestureRecognizer le prototype de cellule dans la table de montage séquentiel, puis tirez le geste à la viewController de l' .m fichier pour créer une méthode d'action.
Je l'ai fait comme je l'ai dit.
Utiliser le UITouch timestamp de la propriété dans touchesBegan de lancer une minuterie ou l'arrêter quand touchesEnded ont été licenciés