Fare UISearchBar prima responder quando View Carichi
-
20-09-2019 - |
Domanda
Ho una semplice UIViewController
e UISearchBar
, quando i carichi vista voglio avere la barra di ricerca diventare il primo risponditore subito in modo che la tastiera sta mostrando e possono iniziare a digitare il loro interrogazione subito. Ho provato a farlo in viewWillAppear
come qui di seguito, senza alcuna fortuna:
- (void)viewWillAppear:(BOOL)animated
{
[productSearchBar becomeFirstResponder];
[super viewWillAppear:animated];
}
C'è un altro posto che io sia chiamando becomeFirstResponder
sul UISearchBar
o dovrei chiamando qualcosa di completamente diverso?
Soluzione
Sposta questo per -viewDidAppear
e dovrebbe andare bene. -becomeFirstResponder
tira sulla tastiera (come si nota), e non si dovrebbe fare animazioni prima che tu sia sullo schermo. È possibile ottenere le interazioni strane.
Se non sta facendo nulla, allora quasi certamente productSearchBar
è un IBOutlet e avete dimenticato di legare in realtà al UISearchBar
in Interface Builder. Questo è il motivo # 1 per "non succede nulla" nell'interfaccia utente.
Si noti che non si dovrebbe essere accedendo tuoi ivars in questo modo; si dovrebbe farne una proprietà e si riferiscono solo ai self.productSearchBar
. Apple ha finalmente pubblicato una corretta spiegazione di questo nella loro di pennino oggetti . Mai accedere ai Ivars al di fuori di una funzione di accesso o di -dealloc
. Questa regola vi farà risparmiare molte ore di debugging.