c# ios xamarin.ios monotouch.dialog

c# - ¿Puede descartarse el teclado tocando fuera de la celda en MonoTouch.Dialog?



ios xamarin.ios (2)

Posible duplicado:
MonoTouch.Dialog: descartar el teclado tocando en cualquier lugar de DialogViewController

Noté que al tocar fuera de la celda de la tabla (que supongo que es la ''sección''), el método touchesBegan no se llama así que no puedo llamar a EndEditing o ResignFirstReponder .

Estoy creando un elemento de entrada de líneas múltiples; debido a esto, la tecla de retorno va a una nueva línea en lugar de "regresar". Este es el comportamiento previsto. Sin embargo, no tengo manera de descartar el teclado.

Me di cuenta en la configuración del menú en el iPhone (General-> Teclado-> Accesos directos) o al ingresar las credenciales, que al tocar en el área exterior no se renuncia al respondedor. ¿Esto significa que esto es una limitación de iOS en su conjunto (o Apple simplemente no creía conveniente en estos casos)?

¿Hay alguna forma de hacer esto?

Hay, en mi opinión, una pregunta idéntica aquí, pero a nadie se le ocurrió una respuesta válida:
¿Puedo descartar el teclado del iPhone tocando el fondo de DialogViewController (MonoTouch.Dialog)?

Tal vez en un año y medio alguien lo ha resuelto?


Creo que tienes 2 opciones:

  • Pon un botón "Hecho" en algún lado
  • Conecta el evento táctil en el fondo de tu vista para descartar

Creo que la primera opción es mejor, ya que es lo que hace Safari.

Puede adjuntar una barra de herramientas a la parte superior del teclado para simular lo que hace Safari con InputAccessoryView . Aquí hay un ejemplo de cómo hacer esto en Obj-C (debería ser fácil de portar): http://gabriel-tips.blogspot.com/2011/05/input-accessory-view-how-to-add-extra.html

Sin embargo, puede no funcionar para su diseño si el espacio de la pantalla es ajustado. Vaya con la opción # 2 en ese caso.


miguel.de.icaza respondió a esta pregunta en un hilo diferente: https://.com/a/10864640/1134836 .

Su solución:

var tap = new UITapGestureRecognizer (); tap.AddTarget (() =>{ dvc.View.EndEditing (true); }); dvc.View.AddGestureRecognizer (tap);