2010-09-30 21 views
8

Estoy buscando la mejor manera de detectar más de un dedo en la pantalla en el momento. No estoy detectando grifos o pellizcos, solo el hecho de que está ocurriendo más de un toque. No parece haber ningún reconocedor de gestos para eso. ¿Cuál es la mejor manera?iOS: detectar cuando hay más de un dedo en la pantalla

+0

¿Esto es para cualquier lugar de la pantalla, o en una vista particular? –

Respuesta

13

En los métodos touchesBegan, touchesMoved, y touchesEnded, un parámetro es el evento, que es un objeto UIEvent. La cantidad de dedos en la pantalla es [[event allTouches] count].

[Editado porque Josh Hinman señalado que lo tenía mal antes -. Mi sugerencia anterior de utilizar [Recuento de toques] en el parámetro de toques en esos mismos métodos no funcionará]

+3

No creo que le brinde de manera confiable el número total de toques en la pantalla; solo la cantidad de toques que se están actualizando. En otras palabras, si tengo tres dedos en la pantalla y muevo un dedo mientras mantengo los otros dos inmóviles, entonces tocaMoved: se ejecutará con un NSSet de un toque (el que moví). –

0

Uno/táctil Multi es transparente para el usuario - Usted acaba de obtener notificaciones en donde comenzó un toque/movido/terminó/parches. Si se producen dos toques al mismo tiempo, recibirá notificaciones para ambos.

No conozco ninguna función incorporada que determine si las secuencias táctiles que ves consisten en una pizca. Pero puedes echar un vistazo al código de muestra de "toques" de Apple en busca de inspiración.

https://developer.apple.com/library/ios/#samplecode/Touches/

3

leer sobre el método -touchesBegan:withEvent:. Es el punto de entrada al manejo de eventos multi-touch.

Aquí hay enlace lib de un desarrollador de eventos multitáctiles: https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html

+0

Intenté esto en el controlador de vista, pero nunca se llama: - (void) touchesBegan: (NSSet *) toques con Evento: (UIEvent *) evento { \t NSLog (@ "num touches:% d", [toques contar]); } – sol

0
  • (vacío) touchesBegan: (NSSet *) toques withEvent: (UIEvent *) evento {

    NSLog (@ "% lu", [[event allTouches] count]); }

Cuestiones relacionadas