J'utilise la méthode décrite par Josh dans this question pour ajouter une barre d'outils en haut du clavier de l'iPhone. Au fond, l'idée est:La barre d'outils alignée au clavier de l'iPhone reste-t-elle visible lors du changement du premier répondant?
- Ajouter le contrôleur de vue à titre d'observateur pour les notifications
UIKeyboardWillShowNotification
etUIKeyboardWillHideNotification
dans sa méthode d'initialisation - Chaque fois que ces notifications sont affichées, animer une barre d'outils sur/hors de l'écran ainsi que le clavier
J'ai aussi plusieurs UITextFields sur l'écran, tous qui deviennent le premier intervenant lors de la sélection pour l'édition et la démission premier intervenant lors de l'édition est terminée (soit l'utilisateur tape un autre champ de texte, hors tout champ de texte, ou appuie sur "Terminé" sur le clavier - j'ai textFieldShouldReturn:
remplacée par resignFirstResponder
).
J'ai un problème, cependant, puisque les notifications sont affichées chaque fois que je passe d'un champ de texte à l'autre. Par exemple, si un utilisateur est en train d'éditer le champ de texte A, il finit avec et tape sur le champ de texte B, A abandonne le premier répondeur et B devient le premier répondeur. Cependant, cela affiche aussi les notifications "will show" et "hide" sur mon contrôleur de vue. Le résultat final de tout cela est que lorsque la barre d'outils apparaît avec le clavier pour le premier champ de texte, et disparaît avec le clavier pour le dernier champ de texte, il semble glisser dans et hors du clavier chaque fois que le l'utilisateur bascule entre les champs de texte.
Existe-t-il un moyen de ne répondre aux notifications "will {show, hide}" que si le clavier est en fait va afficher ou masquer? En d'autres termes, comment puis-je ignorer les notifications qui n'entraîneront pas de modification de l'état visible du clavier?
j'espérais qu'il ne serait pas venu à cette :) Merci! – Tim
Oui, c'est une douleur. Un de ces jours, ils nous donneront une barre d'outils sur le clavier, et nous arrêterons de le pirater pour le faire fonctionner. –