2011-11-11 10 views
25

Durante el desarrollo de una función reciente para mi aplicación para iPad, me di cuenta de que el nuevo comportamiento de acoplamiento/división del teclado iOS5 estaba causando grandes problemas. Utilizo InputAccessoryView para el teclado con un campo de texto similar al de la función de búsqueda en la página de Safari. Expongo el teclado sobre un UIWebView desplazable, por lo que parte de mis problemas provienen de una vista UIWeb encogida cuando el teclado está acoplado y tener una vista web (en su mayoría) de pantalla completa cuando está desacoplado.¿Alguien ha encontrado una buena forma de utilizar los nuevos eventos de teclado iOS5?

Los problemas principales que he encontrado con la API son que las nuevas notificaciones UIKeyboardWillChangeFrameNotification y UIKeyboardDidChangeFrameNotification son un paso atrás de la API anterior en el mejor de los casos, y tienen datos basura que hacen que sea casi imposible entender lo que el teclado realmente está haciendo en muchos casos.

¿Se puede reconocer cualquiera de los siguientes comportamientos del teclado sin examinar arduo los marcos de inicio/final que vuelven a aparecer en las notificaciones?

  • se desacopla del teclado
  • muelles de teclado
  • divisiones de teclado/Unsplits
  • desacoplado del teclado Muestra
  • Undocked teclado Oculta
  • Ver gira mientras el teclado está desacoplado

tengo proponer algunas abstracciones para reconocer marcos que están atracados o fuera de pantalla, pero incluso con eso, mi código se está volviendo muy inmanejable. Si ha encontrado mejores formas de hacerlo, responda o comente. Espero que me esté perdiendo algo aquí. Gracias.

+0

Esto es esencialmente lo que estaba preguntando aquí: http://stackoverflow.com/q/7799421/18091 (aunque su pregunta es mejor) – titaniumdecoy

Respuesta

4

Lo importante no es pensar demasiado en esto. Nada de importancia ha cambiado. Si el teclado entra en la posición de acoplamiento en la parte inferior de la pantalla, recibirá una notificación de "show". Si sale de la posición acoplada en la parte inferior de la pantalla, recibirá una notificación de "oculto". Eso es exactamente lo que sucedió antes de iOS 5.

La única diferencia es que en lugar de abandonar la posición atracada porque se está moviendo fuera de pantalla, podría estar abandonando la posición atracada porque el usuario la desacopló. Todavía obtendrá un "hide", por lo que puede mover su interfaz a su posición base. No necesita saber que el teclado está ahora desacoplado (aunque puede descubrir que no está fuera de pantalla de UIKeyboardDidChangeFrameNotification si realmente lo desea). La razón por la que no necesita saber es que cuando el teclado está desacoplado/dividido, el usuario puede ser proactivo y mover el teclado si está en el camino de algo que necesita ser visto.

Por lo tanto, todos los códigos anteriores a iOS 5 siguen funcionando bien. Todo es realmente bastante inteligente ...

+2

Si no estuviera tratando de tener mi la interfaz hace algo diferente, entonces sí, el código aún funcionaría, sin cambios. Como dije al principio de la pregunta, estoy haciendo esto con una vista accesoria del teclado. Esta vista de accesorios, al menos al tratar de imitar el comportamiento de Safari, no vuelve a la parte inferior de la pantalla ni desaparece; sigue el teclado en la pantalla. En varios escenarios, usar el código existente no lo logra, y en muchos casos surgen problemas con los respondedores. – TahoeWolverine

+0

Cuando divido el teclado, obtengo tanto un show como un hide. ¿Por qué es esto? –

Cuestiones relacionadas