UITextField no recibe la input del keyboard

Estoy teniendo problemas para ingresar text en un UITextField bajo un SVProgressHUD (Básicamente, una UIView con una UIWindow transparente a pantalla completa y algunas subvenciones UIView que muestran text y una barra de progreso dibujada a medida).

Mi problema es que UITextField muestra el cursor parpadeante y el keyboard muestra, pero cuando toco una tecla, no se ingresa nada en el campo de text. Solo veo que el parpadeo del cursor lo interrumpe igual que lo normal. Curiosamente, la tecla de retroceso (borrar) funciona (realmente elimina la última letra en UITextView), pero no cualquier otra key.

Estoy usando iOS 6

Cualquier ayuda sería muy apreciada.

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

Finalmente encontré el problema: SVProgressHUD llama a makeKeyAndVisible cuando se inicializa, porque quiere recibir notifications de keyboard para reposicionar. Busqué lo que realmente es la "Ventana key" y lo descubrí:

… La window key responde a la input del usuario …

Ahora, como la UIWindow de SVProgressHUD era la keyWindow, mi otra window, que contenía el UITextField, no recibió la información del usuario.

Finalmente llamo a makeKeyWindow en la window de AppDelegate y todo funciona bien.

Espero que esto ayude a cualquier persona con problemas similares.

mi solución: llame a resignfirstresponder para descartar el keyboard antes de mostrar SVProgressHUD .

¿Has implementado el método …?

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

… para filtrar los caracteres no deseados? Si es así, ¿quizás sea un poco exagerado con el filtrado?

Para mí esto funciona.

Hice los cambios en el método delegado de campo de text y luego funcionó.

 if ([textField isEqual:selectBankName]) { return No; } else if ([textField isEqual:enterAmountTextfield]) { return YES; } return NO; } 
  1. establecer delegado para campo de text
  2. Asegúrese de que textfield userInteraction esté habilitado.Y

  3. Finalmente, verifique el método de delegado de campo de text.