Machen UISearchBar Ersthelfer, wenn Ansicht Lasten
-
20-09-2019 - |
Frage
Ich habe eine einfache UIViewController
und UISearchBar
, wenn die Ansicht Lasten ich die Suchleiste haben, wollen die Ersthelfer werden sofort, so dass die Tastatur angezeigt wird, und sie können ihre Anfrage sofort die Eingabe beginnen. Ich habe versucht, es in viewWillAppear
wie unten ohne Glück zu tun:
- (void)viewWillAppear:(BOOL)animated
{
[productSearchBar becomeFirstResponder];
[super viewWillAppear:animated];
}
Gibt es einen anderen Ort, dass ich becomeFirstResponder
auf der UISearchBar
anrufen oder sollte ich etwas ganz anderes anrufen?
Lösung
Bewegen Sie dies -viewDidAppear
und es sollte in Ordnung sein. -becomeFirstResponder
zieht die Tastatur nach oben (wie Sie beachten), und Sie sollten nicht tun Animationen, bevor Sie sind dem Bildschirm. Sie können seltsame Interaktionen erhalten.
Wenn es gar nichts tut, dann mit ziemlicher Sicherheit productSearchBar
ist ein IBOutlet und Sie haben tatsächlich vergessen, um es an die UISearchBar
im Interface Builder zu binden. Dies ist die Nummer 1 der Grund für in UI „nichts passiert“.
Beachten Sie, dass Sie sollten nicht Ihre ivars auf diese Weise zugreifen; Sie sollte es eine Eigenschaft machen und nur auf self.productSearchBar
beziehen. Apple hat geschrieben endlich eine richtige Erklärung dafür in ihrem Memory Management von Nib Objekte . Nie Zugriff auf Ihre ivars außerhalb eines Accessor oder -dealloc
. Diese Regel werden Sie viele Stunden Debuggen speichern.