Estoy tratando de implementar un botón redondo similar al control de volumen. Actualmente puedo detectar golpes con el Gesture Recognizer. ¿Cómo puedo detectar un gesto circular (en sentido horario y antihorario) en el botón? ¡Gracias!¿Cómo detectar el gesto circular a través del Reconocedor de gestos?
Respuesta
¿Está buscando un gesto de un toque (como un control deslizante circular), o un gesto de dos toques (como agarrar y girar un mando del mundo real)? Si es este último, eche un vistazo a UIRotationGestureRecognizer
.
Si el primero, estás más o menos solo. Ciertamente puede implementar su solución como su propio reconocedor de gestos personalizado: Apple lo espera, y está some documentation to get you started (aunque no he visto muchos ejemplos que funcionen). Vea también How to correctly subclass UIGestureRecognizer.
Como un enfoque general, pensaría de la región para el gesto como una forma de rosquilla: una zona con el centro c, radio interior r1 , y el radio exterior r2 . Cuando el usuario toca hacia abajo puede calcular la distancia desde c usando el teorema de Pitágoras y el ángulo con su función de trigonometría favorita. Con eso, puedes determinar si el toque está dentro de la zona. A medida que el usuario arrastra, puede actualizar el valor de control según el ángulo. En algún momento, retocarán o arrastrarán fuera de la zona, y eso terminará el gesto. Sugiero permitir que el toque se desvíe bastante adentro de r1 o fuera de r2: los dedos son herramientas imprecisas.
¿Has probado a escribir tu propio reconocedor de gestos? Hay instrucciones detalladas en los documentos.
La mejor manera sería implementar Reconocedor de gestos personalizado. No sé si deseas detectar un Gesto discreto (se llamaría el método de Gestión de eventos una vez que se haya detectado el círculo completo) o un Gesto de continuación (se llamaría el método de Gestión de eventos cada vez que mueves el dedo sobre un Camino circular).
Probablemente, el usuario no puede dibujar un círculo perfecto, y la solución proporcionada por @Sixten Otto sería buena.
Como no pude encontrar una solución, y por inspiración lógica de la respuesta de @ sixten, me he ido y he creado algo útil, no es a prueba de balas, pero parece hacer lo que necesito por ahora.
favor a nadie, tenedor que, clon, usarlo, mejorarlo, es de código abierto, aquí está mi enlace de recompra:
https://bitbucket.org/danielphillips/dpcirculargesturerecognizer
- 1. reconocedor de gestos del iPad - Respuesta diferida
- 2. acciones reconocedor y botón Gesto
- 3. Desactivar reconocedor gesto
- 4. ¿Debo liberar un reconocedor de gestos?
- 5. Desactivar reconocedor de gestos multitarea de iOS durante el juego
- 6. ¿Cómo agregar el reconocedor de gestos a una vista de UIImage?
- 7. Cómo detectar un gesto de tap en las subvistas
- 8. ¿Enviando argumentos al selector de inicialización del reconocedor de gestos?
- 9. cómo detectar deslizar la dirección del gesto?
- 10. Detectar gesto del usuario, como deslizar
- 11. UIPanGestureRecognizer en UITableViewCell anula vista de desplazamiento gesto reconocedor de UITableView
- 12. Detectar gestos táctiles simples
- 13. Manejo de reconocedores de gestos en iOS6
- 14. acelerómetro Smartphone gestos algoritmos
- 15. detectar cuando el dedo se levanta después de un UISwipeGesture [Reconocedor]
- 16. ¿Las variaciones de gestos en la biblioteca de gestos mejoran el reconocimiento?
- 17. ¿Cómo detectar el gesto de la mano en la webcam en vivo con javascript?
- 18. ¿Cómo limitar el reconocimiento de gestos de toque de iPhone dentro de una imagen circular?
- 19. ¿Hay una biblioteca de iOS que me ayude a detectar gestos de acelerómetro de mayor nivel?
- 20. Problemas para detectar gestos en ListView
- 21. Identificador de gestos de barrido adecuado iOS
- 22. Cómo detectar un gesto de deslizamiento en la vista web
- 23. Cómo detectar gestos en OpenKinect (con envoltorios de Python)
- 24. Cómo agregar gestos deslizar a la celda UITableView?
- 25. Detección simple de gestos circulares
- 26. Cómo deshabilitar 4 gestos con los dedos en el iPad?
- 27. iPad - ¿Cómo detectar que los gestos multitarea están habilitados?
- 28. ¿Cómo puede un servicio escuchar gestos/eventos táctiles?
- 29. ¿Hay alguna condición de prioridad entre los métodos de gesto (gesto de desplazamiento y gesto de deslizar)?
- 30. Cómo implementar el gesto de apertura de lista de Android
Un gesto de un solo toque (como un control deslizante circular). – ohho
Entonces, de todos modos, no hay mucho en el camino de una solución enlatada, de Apple. Como sugiere Alexsander Akers, escribir tu propio reconocedor puede ser el camino a seguir. Editaré un poco más a mi respuesta en breve. –
¡Me gusta mucho la solución de donuts! : D –