Para mi aplicación, me gustaría utilizar todas las posibilidades de manipulación incorporadas, como p. Ej. enfocar. Pero si el usuario presiona 3 dedos en la pantalla, me gustaría mostrar un elemento de IU específico. Entonces, ¿cuál es la mejor manera de comprobar si el usuario ha presionado 3 dedos al mismo tiempo y uno al lado del otro en la pantalla? (sin deshabilitar las posibilidades de manipulación incorporadas).Cómo comprobar si se colocan 3 dedos en la pantalla
Mi primer enfoque fue registrar el evento TouchDown en el elemento Grid superior de mi diseño. En el controlador de eventos obtengo el contacto. ¿Pero qué hacer allí?
Simplemente compruebe si el contacto es una huella dactilar, guárdelo en una lista y compruebe si la lista ya contiene dos conacts similares.
¿O hay una solución más sexy?
Gracias!
Editar:
Después de la respuesta que escribí dos métodos:
private void OnContactDown(object sender, ContactEventArgs e)
{
if (this.ContactsOver.Count == 3)
{
Console.WriteLine("3 contacts down. Check proximity");
if (areNear(this.ContactsOver))
{
Console.WriteLine("3 fingers down!");
}
}
}
private Boolean areNear(ReadOnlyContactCollection contacts)
{
if (Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(1).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(1).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100)
{
return true;
}
else
{
return false;
}
}
Tienen que ser reescrito, pero funciona. Y el umbral (atm 100) tiene que ajustarse.
Sea cuidadoso al almacenar 'contactos' en su propia lista. Cualquier llamada al 'contacto' o uso de campos generará una excepción una vez que el dedo que causó el 'contacto 'ya no esté abajo. – Donnie