UIScrollView invalida mi subvista del pan, el gesto reconocedores

Si tengo un scrollView con una subvista y la subvista tiene un pan gesto de reconocimiento, el scrollView del pan, el gesto de anular la subvista del pan. Lo que yo quiero es lo contrario, creo, así que me arrastra una subvista será pan en el desplazamiento de la vista, pero si me toca otra área de desplazamiento vista panorámica como normal. Hay una manera fácil de poner esto en marcha?

OriginalEl autor Mrwolfy | 2013-09-23

3 respuestas

  1. 12

    He aquí lo que funciona para mí:

    UIPanGestureRecognizer *subviewPanRecognizer = [[UIPanGestureRecognizer alloc]
        initWithTarget:self action:@selector(panSubview:)];
    [subview addGestureRecognizer:subviewPanRecognizer];
    
    //play nice with subview's pan gesture
    [scrollView.panGestureRecognizer 
        requireGestureRecognizerToFail:subviewPanRecognizer];
    Ese parece ser el comportamiento por defecto (que es lo que estoy observando en la práctica en un UIScrollView con un UIImageView subvista). Podría alguien confirmar/enfermos?
    no funciona para mí
    Funciona de maravilla, especialmente cuando se aplica a un delegado en la subvista y la implementación de gestureRecognizerShouldBegin:.

    OriginalEl autor Benjamin Cheah

  2. 0

    Sobrescribir estos dos delegado a continuación,

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return YES;

    }

    Esto le permitirá reconocer los gestos, el retorno predeterminado es NO, así que tenemos que sobrescribir y volver .

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
        if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
            return NO;
        }else{
            return YES;
        }
    }
    return YES;

    }

    En este delegado puede hacer cualquier cosa que usted desea, como es el nombre de la gestureRecoginzer estará obligado a fallar por el otherGestureRecognizer, todo lo que necesitas hacer es para juzgar qué tipo de estos dos gestos y volver SÍ o NO.

    OriginalEl autor KaKa

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *