J'ai plusieurs instances d'une classe personnalisée qui accepte les entrées du clavier. Vous pouvez penser à UITextField
(mais ils ne sont pas UITextField
, ils sont NSObject
). Cependant, ils ont tous une propriété UIControl *control
.Reconnaissance du bouton de tabulation pour passer au répondeur suivant
Ces objets sont instanciés et placés dans un tableau (les commandes comptent), et ils sont affichés à l'écran dans le même ordre.
Scénario 1: Onglets utilisateur sur le premier objet, il devient le premier répondeur. L'utilisateur appuie sur un autre objet (de la même classe) et devient le premier répondeur. Aucun problème.
Scénario 2: Onglets utilisateur sur le premier objet, il devient le premier répondeur. L'utilisateur appuie sur le bouton TAB
du clavier (iPad ou iPhone ou clavier sans fil), Je souhaite que l'objet suivant dans la matrice devienne le répondeur suivant. iOS choisit au hasard [? ou avec une logique qui ne me semble pas claire] un autre objet qui n'est pas dans le même ordre que je veux.
Problème: Étant donné que ces objets sont NSObject
s, comment puis-je intercepter la transition vers l'objet suivant. J'ai essayé d'utiliser des balises ou de suivre qui est le premier répondeur, mais le problème est que si l'utilisateur tape sur un objet dans le désordre, c'est bien - je ne veux pas intercepter ça. Je veux seulement intercepter la transition d'un objet à l'autre seulement si c'est en tapant sur TAB
(ou Next
ou Return
) du clavier.
Une idée? Merci.
pourquoi ne pas faire une propriété dans votre classe personnalisée qui pointe vers l'objet suivant qu'il devrait aller à (avec une référence faible) puis juste faire l'objet le premier intervenant automatiquement lorsque l'onglet/retour est pressé, s'il n'y a aucun objet (comme le dernier) ne se passera rien cuz ce sera un message envoyé à zéro .Je pense que vous pouvez même utiliser le constructeur d'interface pour définir ces propriétés personnalisées. (encore une fois, je ne comprends peut-être pas votre problème) – Pochi
@LuisOscar merci. c'est une option à laquelle je n'ai pas pensé, mais il y a quand même des obstacles: 1) mon plus gros problème est que je ne reçois rien quand on appuie sur le bouton TAB du clavier. Comment puis-je l'obtenir? iOS route cette entrée ailleurs, pas à mon objet. 2) Je préfère que ces objets ne sachent rien les uns des autres - même avec une référence faible. Bien que si je découvre que c'est la seule option, je peux ignorer cela. – Canopus
Utilisez-vous le constructeur d'interface? et vous avez dit qu'ils ne sont pas uitextfield mais ils DOIVENT l'être, ou vous devez avoir un uitextfield quelque part pour montrer au clavier (peut-être une sous-classe d'entre eux) que les avez-vous exactement spécifiés? (comme votre sous-classe personnalisée pourrait avoir un champ uitext, alors celui-ci devient le premier répondeur) au sujet du retour, mal coller le code comme une réponse parce qu'il semble drôle ici – Pochi