cocoa-touch - inicio - sensibilidad pantalla iphone 6
Detectando un toque especial en el iphone (2)
Para gestos muy simples (deslizamiento horizontal vs. vertical), calcule la diferencia en x y y entre dos toques.
dy = abs(y2 - y1)
dx = abs(x2 - x1)
f = dy/dx
Un f cercano a cero es un deslizamiento horizontal. Una f cercana a 1 es un deslizamiento diagonal. Y una f muy grande es un deslizamiento vertical (tenga en cuenta que dx podría ser cero, por lo que lo anterior no arrojará resultados válidos para todos los valores de xey).
Si te interesa la velocidad, Pitágoras puede ayudarte. La longitud de la distancia recorrida entre dos toques es:
l = sqrt(dx*dx + dy*dy)
Si los toques ocurrieron en los momentos t1 y t2, la velocidad es:
tdiff = abs(t2 - t1)
s = l/tdiff
Depende de usted determinar qué valor de s interpreta como rápido o lento.
Puede ampliar este enfoque para obtener figuras más complejas, por ejemplo, su forma cuadrada podría ser un deslizamiento horizontal / vertical / horizontal / vertical con puntos de inicio / final donde se detuvo el deslizamiento anterior.
Para figuras más complejas, probablemente sea mejor trabajar con una forma idealizada. Uno podría considerar una forma de polígono como el ideal, y verificar si una gama de toques
- no tenga una distancia demasiado alta a su punto más cercano en el contorno del pologyon, y
- todos los toques siguen la misma dirección a lo largo del contorno del polígono.
Puedes refinar las cosas más allá desde allí.
Me preguntaba si hay ejemplos en línea que cubren cómo puede, por ejemplo, detectar formas en los gestos táctiles.
por ejemplo, un rectángulo o un círculo (o un corazón más complejo ...)
o determinar la velocidad de deslizamiento (con el tiempo (como si estuviera deslizando mi iphone contra 50 mph)
Existen otros métodos para detectar toques no simples en una pantalla táctil. Vea el reconocedor de gestos de unistroke de $ 1 en la Universidad de Washington. http://depts.washington.edu/aimgroup/proj/dollar/
Básicamente funciona así:
- Volver a muestrear la ruta registrada en un número fijo de puntos que están espaciados uniformemente a lo largo de la ruta
- Girando el camino para que el primer punto esté directamente a la derecha del centro de masa de la ruta
- Escala de la ruta (no uniforme) a una altura y ancho fijos
- Para cada ruta de referencia, se calcula la distancia promedio para los puntos correspondientes en la ruta de entrada. La ruta con la menor distancia promedio entre puntos es la coincidencia.
Lo bueno es que la salida de los pasos 1-3 es una ruta de referencia que se puede agregar a la matriz de gestos conocidos. Esto facilita enormemente la compatibilidad con gestos de aplicaciones y crea tu propio conjunto de gestos personalizados, como mejor te parezca.
Esto ha sido portado a iOS por Adam Preble, repo en github: http://github.com/preble/GLGestureRecognizer