2011-09-07 8 views
5

Solo me pregunto si hay alguna manera de que una vista reconozca los gestos de toque mientras se está animando? Estoy trabajando en una vista que tiene una línea de cashapelayer atada a ella. Cuando el usuario mueve la vista (gesto de panorámica), la línea sigue en consecuencia hasta que el usuario deja de panoramizar. En este punto, se ejecuta una animación que devuelve la vista a su posición original y también a la capa de anclaje. Ahora mi único problema real es que mientras la vista y la correa están animando la vista no responde a los gestos de tap ...Cómo reconocer el gesto de tap mientras se está animando una vista

¿Alguien sabe algunos trucos? ¡Espero que mi explicación sea comprensible y gracias de antemano!

(si el concepto de vista atada no está claro, hay una aplicación gratuita llamada Discovr apps que dará un ejemplo).

+0

UPDATE: Para aclarar, el rectángulo delimitador original de la vista reconoce el gesto grifo pero no reconoce el gesto del grifo de la vista en movimiento, en otro palabras, el cuadro actual. – johnnyd

+0

Debe verificar esta respuesta: http://stackoverflow.com/a/4432546/129202 – Jonny

+0

La solución en el enlace anterior puede funcionar con manejo táctil sin procesar, pero podría no funcionar con gestos. Vea esta solución para los gestos: http://stackoverflow.com/questions/8340329/how-to-to-make-gesturerecognizer-working-in-an-animating-uiimage-view –

Respuesta

15

Supongo que está utilizando el método de animación [UIView animateWithDuration: delay: options: animations: completion:];.

Si es así, debe pasar UIViewAnimationOptionAllowUserInteraction como una opción para obtener la vista animada para responder a los toques mientras se está animando.

+1

Gracias por la respuesta, pero ya lo estoy haciendo ese. Parece que el gesto es reconocido, pero solo en el rectángulo original de la vista, no en la vista de movimiento inmediata ... Actualizaré mi pregunta para que sea más claro – johnnyd

2

Debe configurar dos opciones: UIViewAnimationOptionAllowUserInteraction y UIViewAnimationOptionAllowAnimatedContent. Primero, le permite interactuar con las vistas durante la animación, las segundas fuerzas para volver a dibujar las vistas en cada cuadro de animación y no usar instantáneas de los marcos iniciales y finales.

+0

Intenté su sugerencia pero aún no me di cuenta. :(Podría probar este enfoque: [user-interaction-disabled] (http://stackoverflow.com/questions/7221688/caanimation-user-input-disabled) porque esto me está volviendo loco :) – johnnyd

+0

Hm. ¿Qué tal si intentas agregar el reconocedor de gestos a una vista superior de tu vista animada y luego verificas si tocaste dentro de la vista animada con 'hitTest:'? –

+0

Intenté que antes de todo esto y lo intenté de nuevo solo por intentarlo y aún así no funciona ... simplemente no lo entiendo ... ¡gracias por las sugerencias! – johnnyd

1

(Swift 3) opción Pass .allowUserInteraction

UIView.animate(withDuration: 0.75, delay: 0.0, options: [.allowUserInteraction], animations: { 
     // Desired animation(s) 
}, completion: { (finished: Bool) in 
     // Completion 
}) 
Cuestiones relacionadas