2010-05-03 8 views
13

Pregunta simple: ¿Cómo puedo detectar que el teclado en pantalla se haya mostrado en Windows Mobile 7? ¿Hay algún evento al que pueda agregar un oyente?Detecta que el teclado en pantalla se ha mostrado en Windows Phone 7

Se tarda hasta aproximadamente la mitad de la pantalla y quiero desplazar la vista hacia arriba cuando se visualiza ...

EDIT:

un comentario a continuación indica más claramente lo que estoy tratando de do: Tengo una entrada en el cuadro de texto y, a medida que el usuario escribe en ella, aparece debajo de ella un menú desplegable de autocompletar (como google suggest). De forma predeterminada, el control activo (el cuadro de texto) se desplaza a la vista cuando está enfocado, y el teclado en pantalla está directamente debajo de él. El teclado en pantalla aparece delante de mi lista desplegable de autocompletar; lo que quiero hacer es hacer que la pantalla se desplace un poco más hacia arriba, de modo que hay espacio para que se muestre mi menú desplegable.

Las directrices de diseño de la interfaz de usuario de Windows Phone dicen: "Cuando se despliega el teclado, la aplicación debe desplazarse para asegurarse de que el control de edición activo y el símbolo de intercalación están a la vista". Esto sucede, es solo que el menú desplegable no activo se oculta detrás del teclado en pantalla.

Las directrices también dicen que una aplicación puede elegir mostrar el teclado en pantalla y también puede optar por cerrarlo.

En este momento estoy atascado, y no creo (en base a mi investigación y las respuestas a esta pregunta) que es posible detectar que se ha mostrado el teclado en pantalla. Estoy moviendo mi investigación para ver si es posible determinar el "área visible" de la página (ancho & alto en píxeles, por ejemplo), y combinar esto con un onfocus para el cuadro de texto ... no estoy seguro si esto resultará fructífero aunque.

Respuesta

8

La detección cuando se muestra el teclado virtual no será posible en 7.0, as confirmed by Microsoft's Peter Torr en el foro de WP7 en MSDN.

Tal vez, como solución sucia, podría detectar cuándo ha cambiado la posición de su cuadro de texto (o el desplazamiento del visor de desplazamiento principal), ya que esto indicaría que el teclado virtual ha aparecido o desaparecido.

+0

Parece que no es posible, con suerte Microsoft lo agregará a un paquete de servicio o tendré que replantear mi diseño. –

+0

El enlace parece roto. –

4

Puede escuchar los eventos TextBox.GotFocus y TextBox.LostFocus para detectar cuando un cuadro de texto en su aplicación adquiere y pierde el foco.

+2

Preferiría saber que el teclado en pantalla se ha mostrado; solo porque un cuadro de texto tiene foco no significa que se mostró el teclado en pantalla (por ejemplo, el teléfono podría tener un teclado de hardware) –

+1

Buen punto. Por lo que sé, no hay forma de que el Windows Phone SDK actual detecte cuándo aparece el teclado virtual. –

+0

Pueden agregar un evento que se desencadena cuando se muestra el Teclado OnScreen. Algo así debe ocurrir ya que cuando se muestra el SIP, desencadena algunas animaciones, como el deslizamiento del elemento Título de la página, etc. automáticamente, este evento puede quedar expuesto en algunos punto, si no ya – RoguePlanetoid

1

Si un elemento editable obtiene el foco, entonces la estructura desplazará automáticamente el elemento a la vista. Entonces, realmente no deberías tener que hacer nada.

+3

Si hace clic en un cuadro de texto, se desplazará a la vista para que el teclado quede justo debajo del control. Sin embargo, tengo un menú desplegable de autocompletar que aparece debajo del control, y el teclado lo cubre. Quiero que el control esté en la parte superior de la pantalla cuando se muestra el teclado en pantalla ... –