2010-06-09 3 views
7

Hey, je travaillais sur une application de navigation sur iPhone similaire à l'application de contacts. Lorsque vous entrez quelque chose dans la barre de recherche, et faites défiler la table (dans l'application Contacts), le clavier disparaît. Je ne pense pas qu'il résigne premier répondeur cependant, parce que quand j'essaie de le faire dans - (void) scrollViewDidScroll: (UIScrollView *) scrollView, il désactive le bouton annuler, ce qui n'arrive pas dans l'application de contacts. Fondamentalement, ma question est de savoir comment je rejeter le clavier sans désactiver le bouton d'annulation, comme dans l'application de contacts?Rejeter le clavier avec UISearchBar, sans démissionner du premier répondeur

Merci

+1

WOW. Haha, le tutoriel que j'ai utilisé n'a pas utilisé de searchdisplaycontroller, pour une raison ou une autre ... Utiliser ça fait exactement ce que je veux. C'est marrant, parce que j'ai même fait correspondre l'obscurité de la superposition qui se produit quand vous commencez à chercher, mais maintenant ça arrive deux fois, donc ça devient vraiment sombre. – Mike

Répondre

3

Eh bien, juste couru dans cette question très ancienne. Vous pouvez activer le bouton 'Annuler' lorsque vous commencez à faire défiler comme suit:

func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
    searchBar.resignFirstResponder() 
    let searchCancelButton = searchBar.valueForKey("cancelButton") as! UIButton 
    searchCancelButton.enabled = true // <-- THIS line is the trick 

} 

Swift 4

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 
    searchBar.resignFirstResponder() 
    let cancelButton = searchBar.value(forKey: "cancelButton") as! UIButton 
    cancelButton.isEnabled = true 
} 
+0

Oui! Ça marche vraiment! –

+0

Excellente réponse. Syntaxe mise à jour pour Swift 4 –

Questions connexes