Comment gérer les événements tactiles sur UILabel comme sous-vue de UITableViewCell?
Mon application a une coutume UITableView
. Dans le cellForRowAtIndexPath
délégué de la méthode de son UIViewController
je suis de l'instanciation personnalisé UITableViewCell
les objets qui contiennent de multiples personnalisé UILabels (en fait une sous-classe de OHAttributedLabel
) comme des sous-vues de l'affichage du contenu.
J'ai essayé de réglage userInteractionEnabled = YES
sur l'étiquette, puis en ajoutant les événements tactiles dans la vue du contrôleur, mais qui ne fonctionne pas.
Idées?
Grâce
Qu'est-ce exactement ne fonctionne pas? Avez-vous vérifier si vous avez obtenu le droit d'afficher dans votre touche de routine?
Il n'y a rien à vérifier ce que la touche méthodes ne sont jamais touchés.
Il n'y a rien à vérifier ce que la touche méthodes ne sont jamais touchés.
OriginalL'auteur Bama91 | 2011-08-14
Vous devez vous connecter pour publier un commentaire.
Ou
Je ne sais pas pourquoi les touches de l'événement est de ne pas appeler je pense que quelque chose worng vous l'avez fait.Bon de toute façon, avez-vous essayé ma deuxième suggestion? Au lieu de UILabel *label = =[UILabel alloc]init]; vous avez besoin pour créer votre propre classe de l'étiquette et ajouter geste de reconnaissance.
Mon mauvais. Il y A quelques mois lors du test j'avais mis "userInteractionEnabled = NO" dans le initWithStyle méthode du parent UITableViewCell. Après avoir commenté, les événements tactiles fonctionnent comme prévu. Aussi, j'ai trouvé que le OHAttributedLabel est déjà en cours de traitement des événements tactiles si j'avais besoin d'être conscient de ce que dans mon sous-classe.
hahahaha @Bama91, pas de questions, il arrive parfois, c'est pourquoi je me demandais si tout fonctionne alors où est le mal. tout bon travail maintenant.
OriginalL'auteur Praveen-K
Un UILabel n'est pas un UIControl afin de ne pas obtenir événements sur UIControlEventTouchUpInside ou similaire. Pourquoi ne pas utiliser un bouton à la place? Vous pouvez le faire ressembler exactement à une étiquette.
Que vous aurez probablement besoin de régler addTarget:action:forControlEvents: et tag sur la UIButton dans votre cellForRowAtIndexPath: la méthode. Dans cette méthode, détecter les cellules du bouton a été mis sur écoute par l'examen de la valeur du tag.
Si vous devez utiliser un UILabel alors vous avez besoin de sous-classe et intercepter le touchesBegan/touchesEnded méthodes (héritée de UIResponder) pour détecter UIControlEventTouchUpInside vous-même.
OriginalL'auteur Adam Eberbach
Problème dans OHAttributedLabel. Ce label a également des poignées de robinet sur les liens. Donc, pour gérer tapez sur un point quelconque de l'étiquette (pas juste un lien), vous devez
Où l'auto.textLabel est votre OHAttributedLabel.
Et n'oubliez pas de userInteractionEnabled.
OriginalL'auteur surfrider
Je ne sais pas si c'est le même problème, mais... j'ai ajouté une étiquette et ne pouvait pas obtenir de reconnaître une touche, j'ai finalement réalisé que c'était parce que j'étais l'ajout d'une sous-vue, mais son image était en dehors de son parent de l'image, d'où le toucher hiérarchie cassé
OriginalL'auteur dawid
J'ai juste eu le problème avec l'aide de tableau statique des cellules d'un tableau de paramètres d'où je voulais l'ensemble de la cellule pour déclencher le premier intervenant de la cellule textfield.
J'ai fini par l'ajout d'un transparent (personnalisé, titre vide) bouton derrière l'étiquette (tactile désactivé) et textfield, après ne pas avoir toutes les touches à l'aide de modules de reconnaissance de geste. Je pense que cela devrait fonctionner de manière plus élégante, mais il a résolu la tâche pour l'instant et que l'usage limité. (et vous pouvez simplement faire glisser connecter à partir du bouton d'action par défaut)
Peu moche. Là encore, il décrit simplement la zone derrière le champ de texte de réagir au toucher. Ce qui était l'intention, après tout. Donc c'est peut être pas que de fantaisie.
Va le garder jusqu'à ce que j'ai trouver la raison de l'reconnaisseurs pas de tir.
OriginalL'auteur user2400553
vous pouvez utiliser
TTTAttributedLabel
à la place. c'est très facile.quand vous parapher les UITableViewCell,vous pouvez déléguer:TTTAttributedLabelDelegate
comme :
lorsque vous initial ,vous pourriez ajouter un lien vers label :
donc,vous pouvez faire ce que vous voulez:
OriginalL'auteur kingboylee0595