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 dans viewDidAppear. 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 comme viewWillAppear ou viewDidLoad 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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top