2011-02-03 22 views
26

Hola tengo una vista de OpenGL y en eso tengo una barra de pestañas. Estoy usando un reconocedor de tap para tocar diferentes objetos 3d en la pantalla. En la barra de pestañas, tengo un botón, pero no funciona porque el reconocedor de tap capta estos toques también. ¿Cómo paro esto? Ya he probado esto:¿Cómo evitas que UITapGestureRecognizer capture CADA grifo?


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE; 
    return TRUE; 
} 

Creo que de alguna manera estoy comparando classess mal porque cuando depurarlo siempre devuelve TRUE.

+3

su sentencia if nunca puede devolver false - un botón no es una visión ... Pero se puede comprobar a través de un punto de interrupción en el depurador de qué tipo es la vista se obtiene en diferentes posiciones de toma. – Axel

+0

Oh ... Acabo de notar que 'UIBarButtonItem' no es un' UIView' :) Gracias. –

Respuesta

27
 
    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE; 

Así es como lo hice funcionar. La supervista es una UIToolbar, probablemente UIBarButtonIttemis a view después de todo.

+0

Esto funcionó cuando fallaron las pruebas de aciertos en la vista del reconocedor de gestos. Para que quede claro, estaba trabajando en una UITableView y la ubicación del gesto se informó como '{0, contentOffset - someConstant}'. Verificar la vista del tacto es una buena solución. Gracias. – Justin

32

O simplemente puede hacer [singleTap setCancelsTouchesInView:NO]. Ejemplo:

UITapGestureRecognizer *singleTap = [ 
    [UITapGestureRecognizer alloc] 
    initWithTarget: self 
    action: @selector(yourSelector:) 
]; 
[singleTap setCancelsTouchesInView:NO]; 
[[self view] addGestureRecognizer: singleTap]; 
+1

También está disponible en el Creador de interfaces como _Cancelado en Vista_. ¡Estupendo! –

+0

Lo único que funcionó. Y como un encanto, ¿podría agregarlo? sin jugar con el resto del código. ¡gracias! – StinkyCat

+0

¡Gran respuesta, gracias! –

Cuestiones relacionadas