Suena simple ... Sostenga el Trackpad, mueva el dedo, suéltelo ... Pero de alguna manera no se activa el deslizamiento (en cambio, se activa la panorámica)
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];
Pan se reconoce por la secuencia anterior en su lugar.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];
Si se comenta la panorámica, el deslizamiento se reconoce por el mismo gesto. Con esto, 2 preguntas:
- ¿Cuál es la diferencia entonces entre una sartén y un deslizamiento?
- ¿Cómo se puede simular un deslizamiento en el simulador de iPhone?
ios
gesture-recognition
gestures
James Raitsev
fuente
fuente
Respuestas:
Por definición, un gesto de deslizamiento es necesariamente también un gesto de desplazamiento, ambos implican un movimiento de traslación de puntos de contacto. La diferencia está en la semántica del reconocedor: un reconocedor panorámico busca el comienzo del movimiento traslacional y continúa informando movimiento en cualquier dirección a lo largo del tiempo, mientras que un reconocedor deslizante toma una decisión instantánea sobre si los toques del usuario se movieron linealmente en la dirección requerida.
De forma predeterminada, no hay dos reconocedores que reconozcan el mismo gesto, por lo que existe un conflicto entre la panorámica y el deslizamiento. Lo más probable es que su reconocedor de pan "gane" el conflicto porque su gesto es más simple / más general: un deslizamiento es un pan, pero un pan puede no ser un deslizamiento, por lo que el pan reconoce primero y excluye a otros reconocedores.
Debería poder resolver este conflicto utilizando el método de delegado
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
, o tal vez sin delegación haciendo que el reconocimiento de desplazamiento dependa del reconocimiento de deslizamientorequireGestureRecognizerToFail:
.Con el conflicto resuelto, debería poder simular un deslizamiento con un solo dedo arrastrando rápidamente el mouse. (Aunque como el mouse es más preciso que su dedo, es un poco más complicado que hacer lo real en un dispositivo). Se puede hacer un barrido / deslizamiento con dos dedos presionando las teclas Opción y Mayús.
fuente
El gesto de deslizamiento funcionará cuando arrastre el dedo solo en ciertas direcciones (deslizar hacia arriba, deslizar hacia abajo, deslizar hacia la izquierda, deslizar hacia la derecha). Por ejemplo, celdas deslizables en el controlador de vista de tabla.
Pan Gesture funcionará cuando arrastre el dedo en cualquier dirección. Puedes darle aceleración o desaceleración. Por ejemplo, mover un objeto de un lugar a otro o girar una ruleta.
fuente
UIPanGestureRecognizer es una subclase concreta de UIGestureRecognizer que busca gestos de desplazamiento (arrastre). El usuario debe presionar uno o más dedos en una vista mientras la desplaza. Los clientes que implementan el método de acción para este reconocedor de gestos pueden solicitarle la traducción actual y la velocidad del gesto.
Un gesto panorámico es continuo. Comienza ( comenzó ) cuando el número mínimo de dedos permitidos ( mínimoNúmero de Toques ) se ha movido lo suficiente como para ser considerado una panorámica. Cambia (cambia) cuando un dedo se mueve mientras al menos se presiona el número mínimo de dedos. Termina ( finaliza ) cuando se levantan todos los dedos.
Los clientes de esta clase pueden, en sus métodos de acción, consultar el objeto UIPanGestureRecognizer para la traducción actual del gesto ( traducción (en :) ) y la velocidad de la traducción ( velocidad (en :) ). Pueden especificar la vista cuyo sistema de coordenadas debe usarse para los valores de traducción y velocidad. Los clientes también pueden restablecer la traducción al valor deseado.
Ejemplo de demostración de Swift 3 UIPanGestureRecognizer: - Enlace de recursos
Según el documento de Apple. Apple UITapGestureRecognizer
UITapGestureRecognizer es una subclase concreta de UIGestureRecognizer que busca grifos simples o múltiples. Para que se reconozca el gesto, el número especificado de dedos debe tocar la vista un número específico de veces.
Aunque los grifos son gestos discretos, son discretos para cada estado del reconocedor de gestos; así, el mensaje de acción asociado se envía cuando comienza el gesto y se envía para cada estado intermedio hasta (e incluyendo) el estado final del gesto. Por lo tanto, el código que maneja los gestos táctiles debe probar el estado del gesto.
Enlace de recursos de ejemplo de demostración Swap 3 UITapGestureRecognizer
Imagen de ejemplo para Recognizer
fuente
De acuerdo con http://hammerjs.github.io/ , creo que la diferencia es:
El gesto es el mismo, ambos usan un dedo y se mueven.
fuente