21

Ich habe eine einfache UIViewController und eine UISearchBar, wenn die Ansicht lädt Ich möchte die Suchleiste werden die Ersthelfer sofort, so dass die Tastatur angezeigt wird, und sie können beginnen, ihre Abfrage richtig eingeben Weg. Ich habe versucht, es in viewWillAppear wie unten ohne Glück zu tun:Make UISearchBar Ersthelfer beim Anzeigen von Lasten

- (void)viewWillAppear:(BOOL)animated 
{ 
    [productSearchBar becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 

Gibt es einen anderen Ort, den ich becomeFirstResponder auf dem UISearchBar Aufruf werden soll oder sollte ich etwas ganz anderes anrufen?

Antwort

34

Verschieben Sie dies zu -viewDidAppear und es sollte in Ordnung sein. -becomeFirstResponder zieht die Tastatur hoch (wie Sie bemerken), und Sie sollten keine Animationen machen, bevor Sie auf dem Bildschirm sind. Sie können seltsame Interaktionen bekommen.

Wenn es überhaupt nichts tut, dann ist fast sicher productSearchBar ein IBOutlet und Sie haben vergessen, es tatsächlich an die UISearchBar in Interface Builder zu binden. Dies ist der Grund # 1 für "nichts passiert" in UI.

Beachten Sie, dass Sie auf diese Weise nicht auf Ihre Ivars zugreifen sollten. Sie sollten es zu einer Eigenschaft machen und beziehen sich nur auf self.productSearchBar. Apple hat endlich eine korrekte Erklärung dazu in ihrem Memory Management of Nib Objects gepostet. Greifen Sie niemals auf Ihre Ivars außerhalb eines Accessors oder -dealloc. Diese Regel erspart Ihnen viele Debug-Stunden.

+0

Dank Rob, das hat den Trick gemacht. Der Link zum Memory Management ist auch eine große Hilfe, ich werde das beheben. –

+0

Move to -viewDidAppear funktioniert – malhal

+0

Vielen Dank ... hat für mich gearbeitet ... – KSR