2009-12-12 6 views
0

Est-il possible de recevoir une notification lorsqu'un UISearchBar est terminé (par exemple, le bouton Annuler cliqué ou mise au point qui serait autrement perdue.Comment obtenir une notification pour un cache UISearchBar?

Nous n'avons pas accès à l'UITextField à l'intérieur, ou je pourrais joindre un observateur à lui.

je peux être informé dès la mise keyboardWillHide, mais j'ai un autre champ de texte, il pourrait donc être l'un. Et il devient inactif avant que les peaux de clavier, donc pas d'amour.

J'ai accès à la UISearchBarDelegate et UISearchDisplayController (délégué)

Quelqu'un peut-il me dire où chercher? Y a-t-il une liste principale de toutes les notifications à choisir?

Répondre

1

Ces méthodes devraient le faire pour vous:

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;  // called when text ends editing 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;  // called when keyboard search button pressed 
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar; // called when bookmark button pressed 
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar; // called when cancel button pressed 

Ce sont toutes les méthodes de délégués UISearchBarDelegate. Par règle, les méthodes déléguées sont plus étroitement liées que l'ajout d'observateurs pour les notifications. Cela a été mentionné dans l'une des vidéos iPhone de l'Université de Stanford. Bien que j'utilise moi-même des notifications généreusement et n'ai trouvé aucun problème avec eux.

+0

le searchBarCancelButtonClicked fonctionne pour l'un des cas, mais le cas qui sera le plus utilisé dans mon application est l'utilisateur tapant l'espace vide entre la barre de recherche et le clavier, ce qui fait disparaître searchDisplay. Aucune méthode de délégué n'est appelée pour cela. – kbanman

+0

Vous pouvez avoir un bouton de la taille de l'espace entre la barre de recherche et le clavier et le faire apparaître seulement lorsque le clavier apparaît et retirez-le à nouveau lorsque cet espace est cliqué. Vous pouvez le faire comme [self addSubview: bouton]; Lorsque le clavier apparaît ou lorsque la barre de recherche commence à être modifiée et que l'utilisateur clique sur cet espace, l'utilisateur clique essentiellement sur un bouton invisible et vous pouvez ignorer le clavier par resignFirstResponder et supprimer le bouton de la vue. –

0

En général, s'il n'y a pas de section Notifications dans les documents Apple pour une classe, il n'y a aucune notification publiquement disponible pour cette classe.

Je voudrais aller avec la suggestion de Chintan d'utiliser le délégué.

Questions connexes