2012-10-07 17 views
6

Tengo un guión gráfico, que incluye navegación entre vistas. De ida y vuelta, y también existe la posibilidad de saltar todo el camino a la pantalla de inicio.becomeFirstResponder no muestra el teclado por segunda vez (ios 6 + guión gráfico)

Básicamente, funciona así:

  • Ver 1 muestra un menú sencillo.
  • La vista 2 muestra los campos de entrada y muestra automáticamente el teclado.
  • La vista 3 muestra una tabla de resultados. En esta vista, puede retroceder un paso (para ver 2) o regresar a la pantalla de inicio (vista 1).

El teclado y todo funciona perfectamente la primera vez, cuando el usuario se mueve de vista 1 para ver 2. Sin embargo, cuando se mueve o bien volver a la vista 3 Para ver 2 o 3 de la vista y empezar todo de nuevo, el teclado no se muestra

En el código, me he convertido en FirstResponder en el método viewDidAppear. Además, se resignaráFirstResponder cuando se carga la vista 3. Otro hecho interesante es que al llamar a becomeFirstResponder por segunda vez, devuelve NO (mientras devuelve YES la primera vez). Además, al volver a esta vista, los campos de texto no son posibles de seleccionar, incluso si son userInteractionEnabled.

Estoy realmente atrapado aquí, por lo que cualquier ayuda es muy apreciada. he visto varias preguntas similares a éste, pero que no se encuentra una solución:

+0

¿Alguien ha tenido algo de suerte para resolver esto? Miré por todas partes e intenté varias cosas, pero nada funciona ... el teclado solo aparecerá una vez por cada campo – user353877

Respuesta

7

que era capaz de localizar el problema en mi código Respondiendo esta pregunta yo mismo, ya que podría ser útil para otros también.

Mi problema es que realmente no recibí el orden correcto de los eventos. Tenía un botón que se movería al siguiente campo de texto, y si todo estaba completo, pasaría a la pantalla siguiente. Esto provocó que el método becomeFirstResponder se llamara y no se liberara (resignFirstResponder) al cambiar a una nueva pantalla.

Supongo que el principal consejo que puedo dar (al menos lo que finalmente funcionó para mí), fue simplemente pasar por todo el becomeFirstResponder y asegurarse de que se libera antes de pasar a la pantalla siguiente.

Cuestiones relacionadas