Passer À La Prochaine UITextField Lorsque "Suivant" Est Exploité
J'ai une application pour iPad qui a un formulaire d'inscription en son sein. Le formulaire est très simple et ne contient que deux UITextFields qui sont pour Nom & adresse e-Mail.
Le premier Champ est le Nom du candidat, Quand ils entrent leur nom et appuyez sur "Suivant" sur le clavier, je veux que ce de passer automatiquement à la suivante Adresse de Courriel TextField à l'édition.
Une idée de comment je peux mettre le bouton suivant du clavier pour passer à la prochaine clavier?
Grâce
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour faire de votre point de vue contrôleur de l'objet UITextField délégué, et de mettre en œuvre l'objet UITextField délégué méthode:
Swift version:
Vous pouvez également faire défiler vos points de vue sur la emailField pour devenir visible. Si votre vue-contrôleur est une instance de UITableViewController, cela devrait se faire automatiquement. Si non, vous devriez lire ce document Apple, en particulier Déplaçant le Contenu Qui Se Trouve Sous le Clavier partie.
[textField resignFirstResponder];
dans votre code ci-dessus n'est pas important. Alors qu'il y a encore des champs dans le formulaire, il suffit de déplacer lebecomeFirstResponder
au champ suivant:[emailField becomeFirstResponder];
textField
n'est pas une sous-classe de l'objet UITextField et de ne pas faire quelque chose de spécifique quand le premier intervenant statut de l'arrêt de son activité. Cependant, mon code fonctionne bien dans tous les cas, y compris les plus complexes. Voir ici pour savoir pourquoi leresighFirstResponder
peut être substituée.En outre à @lawicko 's réponse que j'ai souvent changer le texte du bouton pour donner cette touche finale (par exemple, dit
next
quand il y a plus de champs et puisdone
lorsque le dernier):Swift version de la réponse correcte.
Dans mon expérience, vous n'avez pas besoin de resignFirstResponder lors de la commutation textFields.
Dans cet exemple, c'est juste de base de votre nom d'utilisateur et le mot de passe textFields.
Le clavier "touche retour" dans la table de montage séquentiel pour le nom d'utilisateur est défini sur "Suivant" et pour le mot de passe est réglé sur "Done".
Ensuite, il suffit de connecter les délégués de ces deux champs de texte et ajouter cette extension et que vous êtes assez bien fait.
De manière plus cohérente et robuste façon est d'utiliser des NextResponderTextField
Vous pouvez le configurer totalement d'interface builder.
Tout ce que vous devez faire est de
UITextField
êtreNextResponderTextField
nextResponderField
à point pour le prochain intervenant, il peut être n'importe quoiUITextField
ou toutUIResponder
sous-classe. Il peut être aussi un UIButton et la bibliothèque est assez intelligent pour déclencher laTouchUpInside
événement du bouton uniquement si elle est activée.Ici est la bibliothèque en action:
Un Swift 4 extension. Juste passer le tableau de
UITextFields
et il va se connecter chaque un à l'autre jusqu'à la dernière, qui démissionne le premier intervenant (masque le clavier):Faire une sortie pour le champ de texte, puis
viewController.h
viewController.m
Faire la relation entre (montrer les connexions inspecteur > Envoyé des Événements)didEndOnExit et textFieldDoneEditing