Cambiar la gestión de UITouch touchesBegan a UIScrollViewDelegate

votos
0

Estoy desarrollando una aplicación de dibujo iOS donde la característica principal es que un usuario puede cargar una imagen como fondo y luego se puede iniciar el dedo dibujo en la parte superior de la misma, zoom y panorámica de la imagen con los sorteos en la parte superior de la imagen en sí.

El esquema de la aplicación es el siguiente.

MainUiView-> UIScrollView-> UIImageView

Dedos de dibujo y de seguimiento se gestiona en el touchesBegan, touchesMoved, touchesEndedde anulación de la UIResponder.

El zoom y panorámica de la UIImageViewes administrado por la UIScrollViewDelegateaplicación.

Tengo un botón que cambia el modo de aplicación del dibujo a modo de zoom y Toma panorámica de la siguiente manera:

Si desea dibujar:

    [scrollView setUserInteractionEnabled:NO];
    [imageView setUserInteractionEnabled:YES];

por lo que los toques se gestionan en las touchesBegan, touchesMoved, touchesEndedmétodos.

si desea desplazarse y hacer zoom con dos dedos utilizando el pellizcar para ampliar gesto

[scrollView setUserInteractionEnabled:YES]; 
[imageView setUserInteractionEnabled:NO];

por lo que el gesto de dos dedos es administrado por el UIScrollViewDelegate

Ahora estoy tratando de evolucionar la aplicación de retirar el botón para cambiar de sorteo para el zoom y el modo panorámico.

Mi idea era realizar un seguimiento de la presencia de dos dedos en el touchesBegany luego desactivar la interacción del usuario en el UIImageViewde permitir la interacción del usuario en el ScrollView, pero el problema es que después de hacer esto los toques todavía se gestionan en el touchesMovedmétodo, nada viene a la scrollViewDelegatehasta que levanto mis dedos en la pantalla, después de eso, si Punt dedos de nuevo en la pantalla todo lo que es administrado por el scrollViewDelegate.

Para resumir: ¿es posible detener el ciclo después de toques touchesBegany propagarla a la ScrollViewDelegate?

Si esto no es posible, ¿cómo puedo lograr el zoom, panorámica y característica de dibujo en una UImageView? ¿Debo quitar la ScrollView y tratar de zoom y panorámica de la UImageViewa través de los UIRespondermétodos?

Gracias por la ayuda

Publicado el 19/09/2018 a las 13:34
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Prueba a cambiar la aplicación a utilizar reconocedores gesto en lugar de la manipulación táctil usando los métodos UIResponder. Principales ventajas de este enfoque son:

  • Puede utilizar UIPanGestureRecognizer para el dibujo , o incluso crear un reconocedor de encargo
  • Usted puede tener relaciones de dependencia entre los reconocedores, utilizando requireGestureRecognizerToFail , incluso a través de puntos de vista
  • Puede recorrer todos los reconocedores en una vista y desactivar conjunto específico únicamente de gestos sin desactivar toques en toda la vista
  • reconocedores gesto tienen los métodos relacionados con la misma táctil, que se puede utilizar para mover el código de control de toque de la aplicación actual a los gestos

Por lo tanto, su vista de la imagen tendrá los modos de giro o el reconocedor gesto personalizada, con un toque único, por el dibujo, y se puede recorrer reconocedores de ScrollView, y marcarlos no activan si se activa el gesto 'draw', usando requireGestureRecognizerToFail.

Con esto, no es necesario para permitir la interacción del usuario desactivar / en cualquiera de los puntos de vista, aunque tendrá que hacer un juicio de que y error para obtener todos los gestos que funcionan entre sí correctamente.

Feliz de codificación :)

Respondida el 19/09/2018 a las 14:05
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more