2010-08-25 5 views
9

Dans mon application, je dois faire une activité en poussant le contrôleur otherview, lorsque je clique sur un UISearchbar qui est ajouté à la vue.Quel événement est appelé lorsque nous frappons UISearchBar

quelle est la meilleure approche pour obtenir ceci.

Comme l'une chose est lorsque l'on clique UISearchBar « searchBarTextDidBeginEditing » obtenir mis le feu, mais avec mon scénario quand je pousse contrôleur de vue dans « searchBarTextDidBeginEditing » et revenir searchBarTextDidBeginEditing s'appelle à nouveau, donc semble il est idéal pour pousser vue manette.

C'est maincontroller

// Search bar 
    iSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 40)]; 
    iSearchBar.delegate = self; 
    iSearchBar.showsCancelButton = NO; 
    iSearchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    iSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self addSubview:iSearchBar]; 

lorsque je clique sur UISearchBar il appelle

- (void)searchBarTextDidBeginEditing:(UISearchBar*)searchBar 
    { 
    [self ShowMySearch]; 
    } 

En ShowMySearch, je poussais un autre contrôleur permet de dire SearchController et quand pop ce SearchController et revenir à maincontroller "searchBarTextDidBeginEditing" appelle de nouveau et searchcontroller est de nouveau poussé et cause des problèmes. ce comportement est visible que sur 3.1.1

Merci,

Sagar

+0

plus d'informations serait utiles –

+0

Plus d'infos –

Répondre

15

Je pense appeler [auto ShowMySearch] dans "searchBarTextDidBeginEditing" est un peu trop tard. Je suppose que "searchBarTextDidBeginEditing" est appelé lorsque la barre de recherche devient le premier répondeur. Puisque c'est le premier répondeur lorsque le contrôleur de recherche est poussé, il devient probablement le premier répondeur lorsque votre contrôleur de recherche est sorti ... appelant ainsi à nouveau "searchBarTextDidBeginEditing".

Pour ce faire, j'utiliser:

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) SearchBar

Cette méthode est appelée après la barre de recherche est exploité, mais avant qu'il ne devienne la premier répondeur. Et si vous renvoyez NON, il ne deviendra jamais le premier répondeur:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { 
    [self ShowMySearch]; 
    return NO; 
} 

Faites-moi savoir si cela fonctionne!

+0

Merci Eric. Cela fonctionne parfaitement. –

+0

remercie Eric Morand. ça marche pour moi – jpd

Questions connexes