Pregunta

tengo un UIView que contiene un UIScrollView y quiero poder capturar el evento "toque" en el UIView cada vez que el usuario aprovecha el UIScrollView.

He intentado incluir todos los manejadores Touchesbegan/End/Canceled en mi UIViewController Pero ninguno de ellos es despedido al tocar dentro del UIScrollView contenido en el principal UIView.

Cuál es la mejor manera de lograr esto?

¿Fue útil?

Solución

En el UIView, implementa touchesbegan:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // assign a UITouch object to the current touch
    UITouch *touch = [[event allTouches] anyObject];

    // if the view in which the touch is found is myScrollView
    // (assuming myScrollView is the UIScrollView and is a subview of the UIView)
    if ([touch view] == myScrollView) {
        // do stuff here
    }
}

Una nota al margen: Asegúrese de que UserInteractionAnabled esté configurado en Sí en el UIView.

Otros consejos

También puede implementar hitTest:withEvent: En su subclase UIView. Se llama a este método para determinar qué subvisión debe recibir evento táctil. Así que aquí puede rastrear todos los eventos que pasan por su vista no u ocultar algunos de los eventos de las subvisiones. En este caso, es posible que no necesite deshabilitar la interacción del usuario para su ScrollView.

Ver más detalles sobre este método en UIView Referencia de clase.

También puede agregar un reconocimiento de gestos a su supervisión. Por ejemplo, un gesto de toque si necesita activar/desactivar cosas como botones que superponen la vista de desplazamiento:

self.tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)] autorelease];
tap.numberOfTapsRequired = 1;

["containerView" addGestureRecognizer:tap];

Los gestos preservan la interacción de la vista de desplazamiento

Debe deshabilitar la interacción del usuario con la vista de desplazamiento como tal ...

scrollView.userInteractionEnabled = NO;

Una vez deshabilitado, la supervisión del UIScrollView obtiene el evento Touchesbegan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top