2012-05-25 9 views
13

Tengo un UIViewparentView que implementa un UITapGuestureRecognizer y hace algo cuando se toca. parentView tiene una vista secundaria llamada childView que también implementa un UITapGuestureRecognizer y hace algo cuando se toca.Desactivar la recepción de toques desde la vista principal en la subvista

hay un caso en que tengo que apagar el childViewsUITapGestureRecognizer durante una animación de un ligero momento, y me di cuenta cuando se apaga y yo toque childView, el grifo se recibido por parentView. Además, tengo una barra de herramientas adjunta en la parte superior de esta vista que no tiene ningún reconocedor de gestos adjunto, y sus toques pasan a parentView (los botones apenas funcionarán). Me pregunto si es posible desactivar esto sin tener una referencia a los padres UITapGestureRecognizer?

He intentado utilizar la propiedad exclusiveTouches de UIView establecido en yes y no funciona. Cualquier sugerencia sera apreciada.

Respuesta

23

En los reconocedores gesto padres, aplicar la UIGestureRecognizerDelegate, y aplicar el siguiente método:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[ClassThatYouWantTouchesBlocked class]]) 
    { 
     return NO; 
    } 
    else 
    { 
     return YES; 
    } 
} 

Reemplazar ClassThatYouWantTouchesBlocked con la clase que desea sus toques a ser ignorados.

1

¿Qué pasa si nunca se apaga reconocedor de gestos de toque de ChildView? si está animando el retorno del método de toque del niño sin hacer nada.

Si se trata de un imageView que isAnimating propiedad podría venir en uso.

+0

¿Puedo saber por qué votar? –

+0

Válida respuesta - Voy a votar. Las personas que votan sin explicación son una plaga para stackoverflow.com. – Cthutu

+0

Apreciar el esfuerzo de Warif, pero downvoted porque no está respondiendo la pregunta, está tratando de cambiar el enunciado del problema. Y @Cthutu, diría que eres más que una ruina para stackoverflow.com por votaciones en contra por no haberlo explicado. –

Cuestiones relacionadas