2010-08-25 5 views
9

In meiner Anwendung muss ich etwas Aktivität, d. H. Andereview-Controller drücken, wenn ich auf eine UISearchbar klicken, die in der Ansicht hinzugefügt wird.Welches Ereignis wird aufgerufen, wenn wir auf UISearchBar

was ist der beste Ansatz, um dies zu erreichen.

Als einer der Sache ist, wenn wir UISearchBar auf „searchBarTextDidBeginEditing“ abgefeuert erhalten, aber mit meinem Szenario, wenn ich View-Controller in „searchBarTextDidBeginEditing“ drücken und wieder searchBarTextDidBeginEditing wieder aufgerufen, so scheint es, nicht ideal ist Blick schieben Regler.

Dies ist 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]; 

wenn ich auf UISearchBar dann nennt es

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

In ShowMySearch, ich drängen einige andere Controller sagen lässt searchcontroller und wenn Pop diese searchcontroller und kommen zurück in maincontroller "searchBarTextDidBeginEditing" Anruf erneut erhalten und SearchController wird erneut gedrückt und verursacht Problem. Dieses Verhalten ist auf 3.1.1

Dank, nur gesehen

Sagar

+0

weitere Informationen wären hilfreich –

+0

weitere Informationen hinzugefügt. –

Antwort

15

Ich denke, ruft [self ShowMySearch] in "searchBarTextDidBeginEditing" ist ein bisschen zu spät. Ich nehme an, dass "searchBarTextDidBeginEditing" als Antwort auf die Suchleiste als First Responder aufgerufen wird. Da es der erste Responder ist, wenn der Such-Controller gedrückt wird, wird es wahrscheinlich wieder zum Erstbeantworter, wenn Ihr Such-Controller ausgeblendet wird ... und ruft "searchBarTextDidBeginEditing" erneut auf.

Um dies zu erreichen, würde ich verwenden:

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) SearchBar

Diese Methode, nachdem die Bar Suche aufgerufen wird angezapft ist, aber bevor es das wird erster Beantworter. Und wenn Sie keine Rückkehr, es wird nie die Ersthelfer werden:

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

Lassen Sie mich wissen, ob das funktioniert!

+0

Danke Eric. Es funktioniert perfekt. –

+0

Dank Eric Morand. Für mich geht das – jpd