21

Tengo un simple UIViewController y UISearchBar, cuando la vista se cargue, quiero que la barra de búsqueda se convierta en la primera respuesta inmediata para que el teclado se muestre y puedan comenzar a escribir su consulta correctamente lejos. He intentado hacerlo en viewWillAppear, como a continuación sin ninguna suerte:Hacer que UISearchBar responda primero cuando vea Cargas

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

¿Hay otro lugar que debería estar llamando becomeFirstResponder en el UISearchBar o debería estar llamando a algo completamente distinto?

Respuesta

34

Mueva esto a -viewDidAppear y debería estar bien. -becomeFirstResponder levanta el teclado (como usted nota), y no debería hacer animaciones antes de estar en pantalla. Puedes obtener interacciones extrañas.

Si no está haciendo nada, casi con certeza productSearchBar es un IBOutlet y se ha olvidado de realmente vincularlo al UISearchBar en Interface Builder. Esta es la razón # 1 para "no pasa nada" en UI.

Tenga en cuenta que no debe acceder a sus ivars de esta manera; debe convertirlo en una propiedad y referirse solo al self.productSearchBar. Apple finalmente ha publicado una explicación correcta de esto en su Memory Management of Nib Objects. Nunca acceda a sus ivars fuera de un accesorio o al -dealloc. Esta regla te ahorrará muchas horas de depuración.

+0

Gracias Rob, que hizo el truco. El enlace en Administración de memoria también es de gran ayuda. Lo arreglaré. –

+0

Move to -viewDidAppear works – malhal

+0

Muchas gracias ... funcionó para mí ... – KSR

Cuestiones relacionadas