Actualmente estoy teniendo algunos conflictos con UIGestureRecognizers que está causando que todo se ponga bien entre sí. Tengo varios cuadrados (UIView) en la pantalla que permiten al usuario desplazarse y pellizcar (se usa para escalar las vistas). Tengo un UIPinchGestureRecognizer agregado a la vista principal que los cuadrados se agregan para que pueda escalar el cuadrado en el foco. También agregué UIPanGestureRecognizers a cada cuadrado para que se pueda mover en la pantalla. El problema se manifiesta cuando pellizco para escalar un cuadrado seleccionado mientras mis dedos se mueven a través de los otros. Basado en mi depuración, parece que si mis dedos pellizcadores atraviesan los cuadrados no enfocados se comen los toques que cancelan el gesto de pellizco. El uso de "[pan requireGestureRecognizerToFail: pizca]" otorga prioridad a la pizca, pero crea y genera problemas porque el reconocedor de panoramización continua ya no se dispara. También traté de agregar el UIPinchRecognizer directamente al cuadrado, pero funciona, pero el gesto tiene la restricción de estar dentro de los límites del cuadrado, lo que no funciona bien si el cuadrado se reduce demasiado. ¿Hay alguna forma de evitar esto? Me estoy perdiendo algo?iPhone - Conflictos con múltiples UIGestureRecognizers
Respuesta
Una forma de solucionar su problema sería establecer un único delegado común para todos sus UIGestureRecognizers (probablemente el UIViewController para esta vista). Ese delegado podría devolver NO para gestureRecognizerShouldBegin: (UIGestureRecognizer *) gestureRecognizer si el reconocedor de gestos de pellizco estaba en los estados "Began" o "Changed" (lo que significa que estaba reconociendo y procesando un pellizco). Eso debería evitar que cualquiera de los reconocedores de gestos de pano de comer toques durante un gesto de pellizco.
En el archivo de interfaz, que tendrá que guardar una referencia al reconocedor pizca gesto:
@interface MyViewController : UIViewController <UIGestureRecognizerDelegate> {
UIGestureRecognizer *pinchGestureRecognizer;
}
Y en la implementación, asegúrese de comprobar el estado del reconocedor pizca gesto, no el estado del gesto reconocedor se pasa:
@implementation MyViewController
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if(pinchGestureRecognizer.state == UIGestureRecognizerStateBegan ||
pinchGestureRecognizer.state == UIGestureRecognizerStateChanged)
{
return NO;
}
else
{
return YES;
}
}
@ Tim: ¡Funcionó muy bien! Supongo que tengo muchos otros escenarios corriendo en mi mente y que por alguna razón no fue claro para mí, pero tiene mucho sentido. ¡Muchas gracias! Por cierto, ¿cómo respondes a las respuestas o editas tus publicaciones? ¿Tienes que estar conectado? Solo estoy usando campos de nombre. Gracias otra véz. – Dave
Consulte la pregunta frecuente sobre el desbordamiento de pila "¿Qué es la reputación?" En pocas palabras, ganas reputación de otros usuarios haciendo y respondiendo buenas preguntas. En ciertos umbrales, obtienes privilegios como editar y comentar. Ya ganaste un representante (el 13 al lado de tu nombre) porque alguien "votó" esta pregunta (el 1 al lado de tu pregunta). –
En realidad, como hizo esta pregunta, debería poder comentar cualquiera de las respuestas con el enlace "agregar un comentario" debajo de cada respuesta, aunque no tenga muchas repeticiones. En general, así es como la gente responde a las respuestas en lugar de hacer nuevas respuestas como lo hizo, pero no se preocupe ... –
- 1. Múltiples gestos para UIGestureRecognizers (iPhone, Cocos2d)
- 2. ¿Cómo encadenar dos UIGestureRecognizers juntos?
- 3. conflictos mod_jk con mod_rewrite
- 4. UIGestureRecognizers vs touchesBegan/touchesMoved/touchesEnded (precisión)
- 5. Forma correcta de colocar/quitar UIGestureRecognizers
- 6. Resolver conflictos pospuestos con SVN
- 7. ¿Múltiples instancias de iPhone Simulator?
- 8. mercurial: conflictos de rama con la etiqueta
- 9. Idempotent git rebase falla con conflictos espurios?
- 10. ¿Manejar conflictos en SVN con Tortoise?
- 11. iPhone Columnas múltiples en UITableView
- 12. iPhone Core Migración de datos con múltiples modelos
- 13. iphone: uitextfield, campos de texto múltiples con el mismo delegado?
- 14. Aplicación de iPhone para solo paisaje con múltiples plumillas
- 15. iPhone - objetivos múltiples múltiples imágenes de lanzamiento pesadilla
- 16. Gestionar conflictos de CSS
- 17. Resolviendo conflictos Git Svn
- 18. reemplazando nuevo con conflictos de macro con ubicación nueva
- 19. resolviendo conflictos simples svn
- 20. conflictos dependencia de Maven
- 21. IPhone OpenGL ES vistas individuales o múltiples?
- 22. one XCode Project múltiples aplicaciones de iPhone
- 23. Múltiples mensajes de iPhone APN, conexión única
- 24. notificaciones push múltiples en 1 dispositivo - iPhone
- 25. conflictos de nomenclatura de funciones
- 26. Resolución de conflictos de subclipse
- 27. Función con el mismo nombre con múltiples argumentos en PHP
- 28. Fusionar conflictos actualizando desde upstream
- 29. Resolución de conflictos de Couchdb
- 30. ¿Cómo configurar la resolución de conflictos svn con meld?
la aplicación suena similar a la [Touches_GestureRecognizers] (http://developer.apple.com/library/ios/#samplecode/Touches/Introduction/Intro.html%23//apple_ref/ doc/uid/DTS40007435) aplicación de ejemplo de Apple. Hace lo mismo con cuadrados y no parece tener el mismo problema. – Anna
@ aBitOvious: Gracias, ese código de muestra es bastante bueno. @ Tim: No estoy estableciendo el delegado en absoluto ahora, así que definitivamente lo investigaré, ya que debería permitir controlar quién come qué. Sabré más una vez que investigo la fuente. – Dave
Acabo de fusionar las seis cuentas basadas en cookies (y limpié todas las cosas aquí; la vida de un conserje nunca es fácil). Por favor considere registrar esta cuenta. – Will