Masquer le clavier lorsque vous perdez le focus sur UISearchBar
Je ne sais pas pourquoi c'est si dur. J'ai un UISearchBar en haut de ma page. Lorsque l'utilisateur tape dans UISearchBar, il sera automatiquement filtrer les résultats dans la UITableView qui est en dessous de la barre de recherche. Il n'est pas nécessaire pour un bouton de Recherche depuis que je recherche lorsque les touches sont pressées.
Le flux de l'application est que l'utilisateur tape une recherche dans la barre de recherche (avec le clavier affiché) et ensuite faire défiler les résultats dans le tableau de la vue à quel point le clavier doit disparaître.
Je vais avoir un moment difficile obtenir le clavier à disparaître.
Je sais que je dois faire:
[searchBar resignFirstResponder];
obtenir le clavier à disparaître, mais je ne trouve pas ce délégué-je besoin pour effectuer cette. Je veux le faire dès que l'utilisateur touche l'affichage de la table.
Des idées?
source d'informationauteur rein
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Il a travaillé pour moi
Je pense que le plus simple (et la meilleure) façon de le faire est à la sous-classe votre point de vue global et l'utilisation hitTest:withEvent méthode d'écouter n'importe quelle touche. Touche sur le clavier ne sont pas enregistrées, de sorte que hitTest:withEvent n'est appelée que lorsque l'on touche de défilement//glisser/pincement... quelque part d'autre, puis d'appeler [auto endEditing:OUI].
C'est mieux que d'utiliser touchesBegan parce que touchesBegan ne sont pas appelés, si vous cliquez sur un bouton situé sur le haut de la vue. Il est également préférable que l'utilisation d'un dim écran parce que dans une, complexe et dynamique de l'interface utilisateur, vous ne pouvez pas mettre dim écran à chaque où la. Aussi, c'est mieux que de l'appeler [barre de recherche resignFirstResponder], parce que vous pouvez avoir beaucoup de champs de texte à l'écran, de sorte que cela fonctionne pour tous les d'entre eux.
Vous voulez peut-être faire comme Cydia (jailbreaké l'emballage de l'INTERFACE utilisateur) - t-il - il y a un bouton de recherche, et lorsque vous appuyez sur le bouton de recherche, il ferme le clavier. Les résultats sont encore filtré à mesure que vous tapez pour avoir un aperçu.
Depuis les résultats dans un tableau afin de les utiliser
UIScrollView
's délégué (à quiUITableView
répond) méthode- (void)scrollViewDidScroll:(UIScrollView *)scrollView
.Vous aurez besoin d'avoir votre point de vue contrôleur de répondre à la
UITableView
's de la source de données et délégué (dans le.h
fichier):Que dans votre méthode d'initialisation dans le
.m
fichier ajouter:Enfin, ajoutez cette méthode:
Cela rendra le
UISearchBar
perdre le focus, et le clavier s'en cacher.Une possibilité est que le UISearchBar appartient à un contrôleur, qui est affichée dans UIModalPresentationFormSheet.
J'ai eu le même problème et a trouvé que ceci est lié à la méthode "disablesAutomaticKeyboardDismissal" de UIViewController.
La La documentation d'Apple les états suivants:
Dans mon cas, j'ai affiché la barre de recherche dans la barre de navigation, j'ai donc dû créer une sous-classe de UINavigationViewController qui remplace la méthode comme suit:
Après que resignFirstResponder serait finalement prendre le clavier disparaître.
Pourrait être super en retard pour répondre, mais cela peut aider quelqu'un dans le futur. Ce morceau de code a fonctionné pour moi. P. S. je n'ai pas cette solution, trouvée il y a quelques temps sur le net lui-même.
Donné une vue avec un
searchBar
variable, ajoutez cette méthode à la vue: