2012-09-19 24 views
18

En una de mis aplicaciones, cuando intento editar (escriba algún texto) UITextField, UITextView o cualquier otro 'texto-poder' UIControl el cursor justo después parpadea pero no hay caracteres se escriben en excepto RETROCESO (posible solo cuando tengo texto inicial), RETORNO y cambio de tipos de caracteres. Esto se aplica a todos los controles en toda la aplicación.no puede escribir texto en UITextField o UITextView en iOS6

Resumen:

  1. Sucede sólo de iOS 6.0 (no se produce en iOS 5.x, 4.x ni simulador o dispositivo real)
  2. Todos los métodos de delegado se disparan (shouldBeginEditing: didBeginEditing:) excepto shouldChangeCharactersInRange:
  3. El indicador isFirstResponder se comporta correctamente (shouldBeginEditing: registra NO, mientras didBeginEditing: registra YES correctamente). También se prueba usando registros que THE firstResponder ES el que ya está editado.
  4. Se repara después de cualquier UIAlertView se presenta al usuario y se descarta. No importa si esta alerta se muestra en la misma pantalla (vista UIViewController) o cualquier otra.

No tengo ni idea de cómo acercar o depurar esto.

¿Dónde debo buscar pistas? ¿Algún experto en el seguimiento de problemas relacionados con la cadena de respuesta, etc.?

¿Cómo puedo rastrear el efecto de UIAlertView sobre el problema?

+0

Publicar estas preguntas me inspiró de alguna manera y encontré la solución. Fue bastante trivial. ¿Debo esperar y darles la oportunidad de ganar algunos puntos o debo publicar una respuesta de inmediato? – Lukasz

+0

aquí es otra solución: http://stackoverflow.com/questions/12447875/keyboard-and-cursor-show-but-i-cant-type-inside-uitextfields-and-uitextviews/12559046#12559046 – Danil

+0

Por favor, publique su solución, lo he intentado todo y todavía no funcionará. Makekeyandvisible no es la única razón por la que esto puede suceder. – Ben

Respuesta

19

En función de la aplicación que es el método de makeKeyAndVisible de la clase UIWindow que ha olvidado a llamar dentro del método - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions del delegado correspondiente solicitud o Visible at Launch bandera en su archivo de interfaz principal xib.

Saludos ... :)

+1

Sí, eso fue exactamente. También agregué window.rootViewController = ... por las dudas. Parece que iOS 6 depende de esas configuraciones más que las versiones anteriores. – Lukasz

+1

O tal vez, por el contrario, las versiones anteriores de iOS estaban haciendo esa llamada ... – Ariel

+0

Sí, recientemente también configuré window.rootViewController para corregir un mensaje de registro de advertencia que apareció al inicio. Me acabo de dar cuenta de que la forma en que lo hice antes (al agregar la vista de mi rootViewController como subvista a la ventana) no tenía la falla UITextField. Sin embargo, no recomiendo volver a este antiguo método de agregar el control raízViewController. Use window.rootViewController y solucione el problema como se describe aquí. – Tafkadasoh

0

en mi situación que tenían un indicador de actividad que aparecerá sobre la ventana principal durante los períodos de actividad de fondo. En este caso, la vista del indicador de actividad tenía su propia ventana que se configuró en UIWindowLevelAlert. Inadvertidamente llamé a makeKeyAndVisible en esta ventana. Más tarde llamaría a resignKeyWindow. Esto solía funcionar en iOS 4 y 5 pero ya no funcionaba en iOS 6. Descubrí que esto no era técnicamente necesario ya que simplemente usaba window.hidden = Y/N funcionaba igual de bien.

2

en mi caso, hay un 'visible en el inicio' en la ventana principal, que no se verificó, que funciona solo en iOS5, necesita comprobarlo para que funcione en iOS6.

0

En mi caso moví becomeFirstResponder para mi UITextField de ViewDidLoad a ViewDidAppear y esto resolvió mi problema.

Cuestiones relacionadas