Appcelerator: la manera adecuada descarta automáticamente el teclado

Estoy escribiendo una aplicación usando Titanium. Quiero poder descartar automáticamente el teclado cada vez que se haga clic en algo fuera del campo de texto. Todavía tengo que encontrar una solución elegante para este problema.

Un par de cosas en las que he pensado, pero todavía estoy buscando una mejor solución:

  1. Asigne detectores de eventos a básicamente todo lo demás presente en la vista y descarte el teclado (usando textField.blur()). Quiero evitar esto ya que da como resultado MUCHO código solo para descartar el teclado. Además, si termino agregando algo más a la vista, también tendré que agregar un detector de clics a ese objeto, por lo que no es muy fácil de mantener.
  2. Cree una gran vista transparente y haga que ocupe toda la pantalla. Colóquelo directamente debajo del campo de texto y agréguele un oyente de un clic en el que descartará el teclado. Esta es una solución mejor que la n. ° 1, pero aún no es excelente porque he tenido muchos problemas para que zIndexes funcione correctamente. También es ineficiente para mis propósitos porque tengo vistas con un ancho y alto específicos que encapsulan campos de texto. Los he usado en aras de la simplicidad del código y los reutilizo en toda mi aplicación.
  3. Intenté agregar un oyente para el evento "borroso" para el campo de texto, pero parece que no se activa correctamente.

Eso es todo. Estoy un poco perdido. El zIndexing también se comporta de manera extraña en el iPhone, y aún no lo he probado en Android. Además, como mencioné anteriormente, muchos de los campos de texto que uso están encapsulados en vistas pequeñas con anchos/altos establecidos, por lo que creo que afectará la funcionalidad de los índices Z.

Entonces, la pregunta principal es: ¿Cuál es la mejor manera de descartar un teclado cada vez que cualquier cosa se hace clic fuera del campo de texto que está enfocado?

preguntado el 12 de junio de 12 a las 18:06

1 Respuestas

Si estoy en lo correcto, el evento de clic se propaga a través de todas las vistas y ventanas, por lo tanto, su opción n. ° 1 podría modificarse para verificar los clics en la capa más inferior (vista o ventana), verifique su fuente y luego decida qué hacer.

Respondido el 13 de junio de 12 a las 12:06

Parece que esta va a ser mi mejor solución. Tengo algunos lugares donde tengo una ventana que aparece sobre otra ventana, por lo que tendré que agregar 2 oyentes en ese caso. La única parte que no me gusta es que incluso si tengo la fuente, tengo que llamar a blur() en el campo de texto enfocado actual, así que tengo que recorrer las vistas para encontrar la correcta. - pav

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.