Comment faire de clavier rejeter quand je la presse de la barre de recherche sur Swift?
J'essaie de faire de ma barre de recherche sur swift, mais j'ai un problème de rejeter le clavier à l'écran quand j'ai appuyé sur de barre de recherche. Quand j'ai essayer avec textfield il fonctionne parfaitement bien avec ce code.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
Il fonctionne quand je presse hors de mon champ de texte et le clavier a disparu. Je veux faire comme ça avec ma barre de recherche, parce que lorsque j'utilise la barre de recherche et l'utilisation de la même façon comme textfield, il ne fonctionne pas du tout. Toute référence ou le code est très utile pour moi.
- Vous pouvez trouver la réponse dans le lien ci-dessous: stackoverflow.com/questions/24908966/...
- j'avais essayer que si je reçois mon code pour textfield et il fonctionne parfaitement bien ce que je dis, mais j'ai un problème lorsque je dois utiliser la barre de recherche, parce que je ne peux pas faire mon clavier rejeter quand je touche une autre zone à l'extérieur de ma barre de recherche
InformationsquelleAutor aji | 2015-04-28
Vous devez vous connecter pour publier un commentaire.
essayez ceci :
remplacer mySearchController avec votre contrôleur de nom..
Si vous n'avez pas la créer par programmation, mais plutôt que vous venez de glisser une barre de recherche de la bibliothèque alors IBoutlet votre consultable à votre classe et de référence comme:
Testé et de travail!
Modifier pour Swift 4.2
Cette méthode sera invoquée lorsque l'utilisateur cliquez sur le bouton rechercher sur le clavier.Donc, ici, nous ne pouvons rejeter clavier.Je pense que c'est la bonne méthode.
Tout d'abord, Apple UISearchBarDelegate est la bonne solution pour cacher le clavier lorsque les utilisateurs cliquent sur un bouton de recherche tout en UISearchBars'instance est la
first responder
(en savoir UIResponder). En bref, searchBarSearchButtonClicked(_:) est ce que vous avez besoin pour cette tâche.Si cela ne fonctionne pas, vérifier, est-ce que votre contrôleur de se conformer à
UISearchBarDelegate
et d'autre part, neUISearchBarDelegate
savoir à propos de votre implémentation de la classe (si vous n'avez pas bien comprendre de quoi je parle, vous devriez apprendredelegation pattern
commencer à lire ici):Plus, si vous avez besoin de masquer le clavier de toucher à l'extérieur de
search bar
sans toucher le bouton de recherche (l'utilisateur peut changer son esprit à la recherche de quelque chose de), UITapGestureRecognizer est un moyen simple trop pour ça.Ctrl-drag
unTap Gesture Recognizer
de laObject Library
à votre Vue-Contrôleur.Ctrl-drag
récemment ajoutéTap Gesture Recognizer
de ladocument outline
dans le storyboard pour votre implémentation de la classe commeIBAction
.@IBAction func tapToHideKeyboard(_ sender: UITapGestureRecognizer) {
self.yourSearchBar.resignFirstResponder()
}
Aussi, n'oubliez pas de créer
@IBOutlet
pour la barre de recherche pour avoir accès à l'intérieur de votre implémentation de la classe.Les deux variantes ci-dessus fonctionnent bien dans mon projet.
Swift 4+:
Vous pouvez essayer, la création d'un robinet geste et de l'ajouter dans l'auto.vue
et dans le sélecteur func vous appelez
self.searchBar.resignFirstResponder
Je l'ai trouvé plus facile et plus simple d'utiliser la Vue de la Table de licenciement. (Si vous utilisez la vue de la table)
Swift 4:
nous pouvons le faire avec des méthodes suivantes
Cela fonctionne très bien pour moi.
Vous pouvez utiliser un UIViewController extension
1. Juste faire de l'extension de fichier et collez-extrait de code suivant
Swift 4
Cela fonctionne pour moi en Swift 4