2010-08-25 23 views
9

Nella mia applicazione, ho bisogno di fare un po 'di attività, spingendo il controller di otherview, quando clicco su una UISearchbar che viene aggiunta alla vista.Quale evento viene chiamato quando colpiamo UISearchBar

quale è l'approccio migliore per ottenere questo.

Come una delle cosa è quando si clicca UISearchBar "searchBarTextDidBeginEditing" licenziato, ma con il mio scenario quando spingo View Controller in "searchBarTextDidBeginEditing" e tornare searchBarTextDidBeginEditing ottenere chiamato di nuovo, quindi sembra che non è il luogo ideale per spingere vista controller.

Questo è 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]; 

quando clicco UISearchBar allora chiama

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

In ShowMySearch, sto spingendo qualche altro regolatore consente di dire searchcontroller e quando pop questo searchcontroller e tornare a MainController "searchBarTextDidBeginEditing" richiama nuovamente la chiamata e searchcontroller viene nuovamente respinto causando problemi. Questo comportamento è visto solo su 3.1.1

Grazie,

Sagar

+0

ulteriori informazioni sarebbero utili –

+0

ulteriori informazioni aggiunte. –

risposta

15

Penso che chiamare [sé ShowMySearch] in "searchBarTextDidBeginEditing" è un po 'troppo tardi. Suppongo che "searchBarTextDidBeginEditing" sia chiamato sulla risposta alla barra di ricerca che diventa il primo risponditore. Poiché è il primo risponditore quando viene premuto il controller di ricerca, è probabile che diventi di nuovo il primo risponditore quando viene visualizzato il controller di ricerca, quindi chiama ancora "searchBarTextDidBeginEditing".

Per raggiungere questo obiettivo, userei:

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) Searchbar

Questo metodo viene chiamato dopo che la barra di ricerca è sfruttato ma prima che diventi la primo soccorritore. E se restituite NO, non diventerà mai il primo risponditore:

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

Fammi sapere se funziona!

+0

Grazie Eric. Funziona perfettamente. –

+0

ringrazia Eric Morand. per me funziona – jpd

Problemi correlati