https://vimeo.com/679102475 Si vous vous êtes amusé à jouer un peu avec votre formulaire, vous vous êtes sans doute aperçu que sans que vous ayez quoi que ce soit à faire, votre clavier apparaît automatiquement lorsque vous cliquez sur un champ de texte. Show
C'est pratique, mais du coup ça prend une bonne partie de l'écran, et on ne peut plus cliquer sur le bouton Valider... Dans ce chapitre, nous allons apprendre à gérer la disparition du clavier ! Rappel sur le champ de texteTant qu'on en est à parler du clavier, laissez-moi vous faire un petit rappel sur ce qu'on a vu avec le champ de texte. Le clavier est entièrement lié au champ de texte. Par exemple, c'est le champ de texte qui décide du type de clavier qui s'affiche. On a ensemble modifié la propriété Cela veut dire que c'est également le champ de texte qui décide de l'apparition et de la disparition du clavier. Clavier dans le simulateurSi vous lancez l'application dans le simulateur, le clavier ne s'affiche peut-être pas. Cela est dû à un réglage spécial du simulateur. Quand vous interagissez avec une application dans le simulateur, vous avez l'option d'utiliser le clavier iOS présent sur l'écran du simulateur, ou d'utiliser le clavier de votre Mac. Vous pouvez alterner entre les deux options en allant dans Hardware > Keyboard > Connect Hardware Keyboard. Vous pouvez également utiliser le raccourci shift + cmd + K . Une tape et... disparition !Le clavier apparaît donc automatiquement, mais il ne disparaît pas ! Le réflexe commun, c'est de cliquer n'importe où en dehors du champ de texte pour faire disparaître le clavier. Alors, essayons de rajouter cette fonctionnalité à notre page ! Ajout du Tap Gesture RecognizerPour y parvenir, il faut associer le geste "Tap" à "n'importe où sur la page". Et vous savez déjà faire cela ! Nous allons utiliser Sélectionnez Et glissez-le sur la vue principale. Je vous suggère d'utiliser le panneau latéral gauche dans votre storyboard (Document Outline) pour être certain d'atterrir au bon endroit. Le Tap Gesture Recognizer est maintenant ajouté et relié à la vue principale. Tap Gesture Recognizer pop-upCréation de l'actionNous allons maintenant pouvoir créer l'action correspondant à notre Le code suivant est généré :
Dans cette méthode, nous allons rédiger le code permettant de cacher le clavier. À vos outletsOn l'a dit, c'est la responsabilité du champ de texte de cacher le clavier. Donc nous allons avoir besoin d'accéder aux champs de texte dans le code. Pour cela, créez deux outlets correspondant aux deux champs de texte. Voici mon résultat :
La notion de firstResponderTout est prêt ! Nous avons le geste, l'action et les outlets. Il ne reste plus qu'à rédiger la commande. Et cette commande, elle ressemble à ceci :
Pourquoi ça ne s'appelle pas Très bonnes questions ! En iOS, un Le premier répondeur ( Autre exemple, mettons que j'aie deux boutons l'un en dessous de l'autre, et que j'appuie dessus. Techniquement, les deux boutons ont été touchés. Mais un seul lancera son action ; on l'appelle le firstResponder . Lorsque l'on touche le champ de texte, il devient
À l'inverse, n'importe quelle vue peut décider de ne plus être le
Lorsqu'un champ de texte n'est plus Vous pouvez faire la même chose avec
Vous pouvez tester dans le simulateur, et ça marche ! Et la touche de retour ?La touche de retour sur le clavier, c'est celle-ci : Continuer = retourLorsqu'on appuie sur cette touche, l'utilisateur peut vraisemblablement s'attendre à ce que le clavier disparaisse. Et pour cela, il faut que la vue puisse prévenir le contrôleur de l'évènement "a appuyé sur la touche retour". Si seulement elle pouvait lui déléguer la.... On va utiliser un delegate ! Mais quelle vivacité d'esprit ! Je suis ébahi. Je vous adore ! En effet, on va utiliser un
1. Le champ de texte nomme le contrôleur comme son delegatePour cela, vous vous souvenez, on utilise un control-drag depuis le champ de texte vers le contrôleur, et dans la pop-up on clique sur delegate. Drag partant du champ Nom vers l'Outlet delegateVous pouvez répéter l'opération pour le deuxième champ de texte. 2. Le contrôleur adopte le protocoleLe protocole correspondant s'appelle Et pour que le contrôleur l'adopte, il faut ajouter une extension à la classe, comme nous l’avons vu dans le chapitre précédent.
3. Le contrôleur se conforme au protocoleIl ne nous reste maintenant plus qu'à implémenter la méthode qui nous intéresse dans ce protocole, et qui correspond à l'événement "a appuyé sur la touche retour". Cet évènement s'appelle :
Cette fonction prend en paramètre un Mais avant de renvoyer le booléen, on peut faire ce qu'on veut, et notamment :
Et maintenant le champ de texte disparaîtra lorsqu'on appuiera sur la touche de retour ! Voici le code complet de la fonction :
Allez plus loinUn dernier cas courant que vous rencontrerez en manipulant les claviers, c'est celui d'un clavier qui recouvre un champ de texte. C'est notamment le cas si vos champs de texte sont situés en bas de l'écran. Dans ce cas, l'utilisateur ne voit pas ce qu'il écrit ! Il y a deux solutions :
Pour réaliser la deuxième solution, il va falloir effectuer les actions suivantes :
Pour cela, rien de plus simple. iOS fournit deux notifications
pour déterminer l’affichage et la disparition du clavier, que nous pouvons écouter via le Commencer par créer deux méthodes pour capter les notifications :
Puis demander au NotificationCenter d’utiliser ces deux fonctions en cas d’affichage ou de disparition du clavier :
Ensuite, dans la
méthode
Puis faire l’inverse dans le cas de
Et voici le résultat : On y est presque !Toutefois, comme vous pouvez le remarquer, tout ce qui est en haut de l’écran disparaît. Cette solution n’est pas toujours idéale. Rassurez-vous, il en existe d'autres, comme l’utilisation de Scroll View, ou bien encore la possibilité de ne pas remonter complètement l’écran mais uniquement une partie. Toutefois je ne détaillerai pas toutes les solutions dans ce cours. Je vous invite à consulter les réponses sur ce Stack Overflow, il vous donnera quelques pistes de solutions. N'hésitez pas à faire vos propres recherches sur Internet, car les solutions évoluent aussi avec les mises à jour d’iOS. En résumé
Dans le prochain chapitre, nous allons apprendre à récupérer les données de notre formulaire ! Comment remettre le clavier sur iPhone ?Ajouter ou modifier des claviers sur l'iPhone. Accédez à Réglages > Général > Clavier.. Touchez Claviers, puis effectuez l'une des opérations suivantes : Pour ajouter un clavier : Touchez Ajouter un clavier, puis choisissez un clavier dans la liste. Répétez l'opération pour ajouter d'autres claviers.. Comment remettre le clavier en bas de l'écran ?Pour déplacer le clavier vers le milieu de l'écran : Faites glisser votre doigt sur Détacher, puis relâchez. Pour revenir à un clavier complet : Faites glisser votre doigt sur Ancrer et réunir, puis relâchez. Pour revenir à un clavier complet au bas de l'écran : Faites glisser votre doigt sur Ancrer, puis relâchez.
Comment remettre le clavier Apple ?Comment redonner au clavier dissocié de votre iPad sa forme normale. Touchez un champ de texte dans une app pour afficher le clavier. Touchez et maintenez votre doigt sur le bouton du clavier dans le coin inférieur droit du clavier. Glissez le doigt vers le haut pour Réunir ou Ancrer et réunir le clavier, puis relâchez ...
Pourquoi le clavier de mon iPhone ne fonctionne plus ?Allez dans “Réglages” sur votre iPhone 12 ou d'autres modèles d'iPhone > Appuyez sur “Général” puis “Réinitialiser“. Sur l'écran du menu de réinitialisation, vous trouverez l'option ” Réinitialiser le dictionnaire du clavier “. Tapez dessus et suivez les instructions pour réinitialiser le dictionnaire de votre clavier.
|