Les événements tactiles sur UITableView?
J'ai UIViewController
et UITableView
de l'enfant dans la vue,
ce que je veux faire, c'est quand je touche toute la ligne je suis l'affichage d'une vue en bas. Je veux cacher ce point de vue, si l'utilisateur de toucher n'importe où d'autre, alors les lignes ou les bottomView.
Le problème est que lorsque je clique sur UITableView
il n'a pas les feux de touchesEnded
événement.
Maintenant, comment puis-je détecter le toucher sur UITableView
et de le distinguer avec une ligne de sélection de l'événement.
Grâce.
- Je ne suis pas sûr de comprendre. Voulez-vous dire que vous avez une UIView (viewA) qui détient une UITableView, et un autre UIView (viewB) (en bas). Si l'utilisateur touche à tout endroit autre qu'un UiTableViewCell, ou viewB, alors vous voulez cacher viewB. Sinon, montrer viewB. est-ce exact?
- Oui exactement ce que je veux faire.. Et si l'utilisateur touche sur UITableViewCell je veux montrer la viewB. Que je peux arriver à via didRowSelectedAtIndexPath:
- Si vous le demandez.. "comment capter le toucher des événements qui se produisent sur une UITableView, mais pas dans une cellule?"
- Oui bien sûr.. j'ai besoin de détecter le contact de UITableView pas de cellule
Vous devez vous connecter pour publier un commentaire.
Pas besoin de sous-classe quoi que ce soit, vous pouvez ajouter un
UITapGestureRecognizer
à laUITableView
et absorber le geste ou pas, en fonction de vos critères.Dans votre viewDidLoad:
Ensuite, mettre en œuvre votre action de ce genre pour les critères:
Et notez que si vous voulez juste tout simplement ramasser clique n'importe où sur la table, mais pas sur tous les boutons dans la cellule lignes, vous ne devez utiliser que le premier fragment de code ci-dessus. Un exemple typique est lorsque vous avez une UITableView et il y a aussi un UISearchBar. Vous voulez éliminer la barre de recherche lorsque l'utilisateur clique, rouleaux, etc l'affichage de la table. Exemple de Code...
Espère que cela aide quelqu'un.
Vous devez avant l'événement tactile à la vue du contrôleur.
Sous-classe de votre tableview de contrôle, puis remplacer la méthode:
ensuite , vous pouvez faire ce que vous voulez dans le contrôleur tactile de méthodes.
Je viens de tombé sur ce qui peut être une solution pour votre problème. Utiliser ce code lorsque vous créez votre tableau: les
Sans mettre ce paramètre à
NO
, les événements tactiles sont annulées dès qu'il est encore un peu légère d'un mouvement vertical dans votre vue de la table (si vous mettez NSLog déclarations dans votre code, vous verrez quetouchesCancelled
est appelée dès que le tableau commence à défiler verticalement).touchesCancelled
. DansviewDidLoad
j'ai mis[tblTemp setCanCancelContentTouches:NO];
. Non de mon touch méthode est appelée.J'ai été confronté à ce problème depuis longtemps et n'a pas obtenu une solution de travail. Finalement, j'ai choisi d'aller avec une alternative. Je sais que techniquement ce n'est pas la solution, mais cela peut aider quelqu'un qui cherche la même chose pour vous.
Dans mon cas, je veux sélectionner une ligne qui va vous montrer certains de l'option après que je touche n'importe où sur la table ou de la Vue je veux cacher ces options ou faire n'importe quelle tâche à l'exception de la ligne sélectionnée précédemment pour que je n'ai suivantes:
Ensemble des événements tactiles pour la vue. Cela va faire la tâche lorsque vous touchez n'importe où sur la vue à l'exception de l'affichage de la table.
TableView de didSelectRowAtIndexPath faire à la suite
Je sais que c'est vieux poste et pas une bonne solution technique, mais cela a fonctionné pour moi. Je suis l'affichage de cette réponse, car cela peut aider quelqu'un à coup sûr.
Remarque: Le code écrit ici peut avoir des sorts erreurs, parce que directement tapé ici. 🙂
Essayez cette méthode:
Utilisation scrollViewDidEndDragging comme alternative de touchesEnded. Espérons que cela aide.
Pour recevoir les événements tactiles sur le
UITableView
utilisation:recevoir des événements tactiles UITableView
Dans votre classe de contrôleur de déclarer une méthode qui supprime l'affichage du bas. Quelque chose comme ceci:
Dans Interface Builder, sélectionnez votre point de vue et à l'identité de l'inspecteur dans la classe personnalisée section, changer la classe de
UIView
àUIControl
. Après cela, allez à l'connexions inspecteur et de connecter le TouchUpInside cas de la méthode déclarées ci-dessus. Espérons que cette aide.