2012-04-26 10 views
5

Agregué un UIView que dependía de TouchesMoved: eventos para arrastrar toques. Hay una larga pulsación, toque, rotar y pellizcar reconocedores de gesto ya presentes dentro del mismo controlador de vista. Me encuentro con un problema donde la vista recibe los eventos touchesBegan: y touchesEnded:, pero no toques movidos.iPhone UIView toquesMoved: withEvent: no se invoca en UIView con reconocedores de gestos

¿Mi problema con los toques no se menciona como el hecho de que los reconocedores de gestos cancelen los toques dentro de la vista? También tengo una vista de desplazamiento involucrada. ¿Podría ser ese el culpable?

Si no podré usar touchesMoved, que es el gesto más cercano para implementar la funcionalidad "tocar y mover". ¿Es un reconocedor de gestos de toque o pan?

¡Gracias por tu ayuda!

Respuesta

13

Los gestos predeterminados cancelan los toques en el objeto al que están vinculados cuando están activos. Puede detener este comportamiento estableciendo la propiedad cancelsTouchesInView en NO.

2

Mezclar el manejo del tacto en bruto con los reconocedores de gestos puede producir comportamientos extraños, al menos no pude hacerlo funcionar sólidamente, era algo escamoso. En su situación, es posible que desee agregar un reconocedor de gestos de arrastre (UIPanGestureRecognizer) a la vista para manejar los drags.

Puede controlar el mecanismo por el cual los reconocedores de gestos disparan en qué situaciones al buscar en gestureRecognizer: shouldRecognizeSimultaneouslyWithGestureRecognizer: de UIGestureRecognizerDelegate.

+0

Añadiendo UIPanGestureRecognizer funcionó! –

+0

Totalmente de acuerdo. Cambiar a reconocedores de gestos resolvió todos mis problemas. –

+0

También estaba teniendo problemas con una subvista en un UITextField usando UIResponder cosas. El campo de texto siguió robando mis toques. Reconocedores de gestos arreglaron eso. –