Comment supprimer insérable animation clavier virtuel?
Question
J'ai un problème avec la création d'une vue de la recherche modale qui émule le comportement de celui de l'application Météo. Plus précisément, il y a deux animations, qui me dérangent et introduisent des retards inutiles s 0.2:
-
Lorsque la vue modale devient visible, je donne le focus à la
UISearchDisplayController.searchBar
par intitulant becomeFirstResponder dansviewDidAppear
. Cependant, le clavier ne soit pas visible, lorsque la vue modale a glissé, mais a besoin d'un autre 0,2s à glisser après l'animation de transition modale tehe vue est terminée. Déplacement de l'appel à un autre rappel commeviewWillAppear
ouviewDidLoad
n'a pas bonne, le clavier ne sera pas affiché en premier lieu. -
Quand les touches utilisateur annulent, il y a une autre animation qui aura lieu, avant la méthode de
searchDisplayControllerDidEndSearch
du délégué est appelé, en élargissant le champ de texte de recherche et « fusion » loin le bouton. Encore une fois, cette animation est unneded que la vue modale est censé passer lorsque le bouton est touché. -
En outre, lorsque je rejette et re-présente la même vue, non seulement le coulisseau de clavier après la transition, mais le bouton d'annulation fait de même (heureusement simultanément).
Je suis au courant d'un problème similaire à celui décrit ici: Clavier d'animation Problèmes lors de l'appel becomeFirstResponder dans un Voir Modal Controller.
Cependant, il semble que le comportement de la barre de recherche est sligtly differet puis celle du champ texte. Je ne pouvais pas reproduire les étapes décrites par cet auteur pour rendre le clavier visible en appelant becomeFirstResponder
dans viewDidLoad
.
Cordialement, Chris
La solution
I think I found your answer. When you add a search bar using the interface builder, you can do it two ways: "Search bar" and "Search bar and Search Display Controller".
I was using the second and was having the very same problem you described. I could only invoke the keyboard (using becomeFirstResponder) on "viewDidAppear". But if you do it adding just the search bar it works. Now I can call becomeFirstResponder on "viewDidLoad" and the keyboard appears together with the view itself.
I means a little more work, but really not much. You have to set your controller to be the delegate of the search bar. I added a list view for the results and made my controller become its delegate and its datasource.