2011-04-22 11 views
23

pregunta muy simple:¿Cómo cargo automáticamente el teclado (iOS SDK)?

Tengo una vista que consta de dos campos de texto. Cuando se carga la vista, quiero que el teclado aparezca automáticamente y enfoque el primer campo.

¿Cómo puedo hacer eso? (En el código? En IB?)

¡Muchas gracias! wasabi

Respuesta

61

En su método viewDidAppear: llame al [yourTextField becomeFirstResponder].

+1

Muchas gracias, muy apreciada :-) Me siento estúpido, porque eso es lo que he intentado al principio, pero se me ocurrió que he perdido en un método personalizado en el que no estaba 't llamado ... * suspiro * ty – pkluz

+0

Agradable respuesta agregar +1 – Nikhil

+0

Pero no muestra el teclado inmediatamente en la vista. – Szu

7

[myTextField becomeFirstResponder] debería hacer el truco.

También asegúrese de implementar los métodos UITextFieldDelegate donde puede ocultar la primera respuesta.

2

Como una aclaración a la respuesta de MarkGranoff;

Si ponemos la [yourTextField becomeFirstResponder] dentro viewDidLoad o viewWillAppear - se mostrará el teclado sin esperar un segundo o dos (lo que ocurre si se pone la llamada becomeFirstResponder dentro del método viewDidAppear).

+1

Pero en vista, el teclado WillAppear se muestra durante 1 o 2 segundos y descarta inmediatamente – GSD

+0

El uso de 'viewWillAppear' funciona en algunas situaciones y otras no. Creo que depende de cómo se presenta el controlador de vista. –

2

Bueno, sé que esta pregunta ya ha sido respondida muchas veces. Lleva tiempo mostrar un teclado después de que se llama al método viewDidAppear.

La razón por la cual viewDidAppear es el último método que se llama en vista el ciclo de vida después de que desaparece, por supuesto. Además, también se debe crear el teclado, si no se pudo encontrar en la memoria. Entonces, la primera vez toma más tiempo como esperaba. Estas razones causan una pequeña demora que me estaba molestando.

Siempre llamo al método en el método viewWillAppear para disminuir el tiempo de visualización del teclado, pero necesitaba mostrar el teclado justo después del método viewDidAppear para no perder la animación suave.

Por lo tanto, este pequeño truco que surgió funciona como un encanto. Lo probé tanto en simulador como en dispositivos. Si no funciona correctamente en su caso, no tiene otra opción, pero haga que funcione como se explica en la respuesta aceptada.

Bueno, lo que estoy haciendo es crear un UITextField (puede usar cualquier vista que interactúe con el teclado) y llamar a los métodos de respuesta inmediata para poner mi teclado en la memoria, si aún no se ha creado. Por lo tanto, la segunda vez, obtendrá teclado en la memoria caché, lo que acelerará el tiempo de visualización del teclado. Bueno, puse este código en el controlador de vista anterior que voy a mostrar el teclado después.

Aquí está el código:

- (void)viewDidAppear:(BOOL)animated 
{ 
    UITextField *textField = [[UITextField alloc]init]; 
    [self.view addSubview:textField]; 
    [textField becomeFirstResponder]; 
    [textField resignFirstResponder]; 
    [textField removeFromSuperview]; 
} 
Cuestiones relacionadas