2012-09-29 28 views
10

Tengo problemas para escribir texto en un UITextField bajo SVProgressHUD (básicamente una UIView con una ventana UI transparente a pantalla completa y algunas subvistas de UIView que muestran texto y una barra de progreso dibujada a medida).UITextField no recibe entrada de teclado

Mi problema es que el UITextField muestra el cursor parpadeante y el teclado muestra, pero cuando toco una tecla, no se ingresa nada en el campo de texto. Solo veo que el cursor parpadea de manera normal. Curiosamente, la tecla Atrás (eliminar) funciona (realmente elimina la última letra en UITextView), pero no tiene otra clave.

estoy usando iOS 6.

Cualquier ayuda sería muy apreciada.

EDITAR: El mismo UITextField funciona bien cuando no se muestra SVDgressHUD. Esto me hace pensar que tiene algo que ver con el primer respondedor, pero ya he intentado llamar al resignFirstResponder en cada ventana y subvista del SVProgressHUD y todavía no funciona.

Respuesta

34

Finalmente encontré el problema: SVProgressHUD llama a makeKeyAndVisible cuando se inicializa, porque quiere recibir notificaciones de teclado para el reposicionamiento. Miré lo que la "ventana Clave" es en realidad y descubrí:

... La ventana clave responde a la entrada del usuario ...

Ahora, como el UIWindow del SVProgressHUD fue el keyWindow, mi otra ventana, que contenía el UITextField no obtuvo la entrada del usuario.

Finalmente llamo al makeKeyWindow en la ventana de AppDelegate y todo funciona bien.

Espero que esto ayude a cualquier persona con problemas similares.

+0

podemos usar makeKeyWindow y makeKeyAndVisible both.is that any sense o use – Anju

+2

No tengo idea de por qué esta respuesta no tiene algunos cientos de votos por ahora. ¡Muchas gracias! –

+0

No sé por qué me molesto en depurar problemas como este cuando StackOverflow siempre aparece. ¡Gracias! –

2

se han ejecutado el método ....

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

... para filtrar los caracteres no deseados? Si es así, ¿tal vez está siendo un poco demasiado entusiasta con el filtrado?

+0

No uso shouldChangeCharactersInRange (Es un UITextField en realidad. Lo siento, he actualizado mi pregunta) para el campo de texto. Además, el mismo UITextField funciona bien cuando no hay ningún SVProgressHUD mostrado anteriormente. ¡Gracias por tu respuesta, sin embargo! –

4

mi solución: llame al resignfirstresponder para cerrar el teclado antes de mostrar SVProgressHUD.

0

Para mí esto funciona.

Hice cambios en mi método de delegado de campo de texto y luego funcionó.

if ([textField isEqual:selectBankName]) 
{ 
    return No; 
} 
else if ([textField isEqual:enterAmountTextfield]) 
{ 
    return YES; 
} 

return NO; 
} 
  1. conjunto delegado de campo de texto
  2. Asegúrese userInteraction campo de texto es Enabled.And

  3. último por confirmar su método campo de texto delegado.

Cuestiones relacionadas