2010-05-01 24 views
1

J'ai une application iPad où j'ai un contrôleur de vue qui est le UIGestureRecognizerDelegate pour un certain nombre de UIGestureRecognizers. Je l'ai mis en œuvre la méthode suivante de UIGestureRecognizerDelegate:iPad. UIBarButtonItem a une vue non documentée de type UIToolbarTextButton. Huh?

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 


// Double tapping anywhere on the screen hides/shows the toolbar 
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES) { 

     if (touch.tapCount == 2) { 

      self.toolbar.hidden = self.toolbar.isHidden ? NO : YES; 

     } // if (touch.tapCount == 2) 

} // if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES) 


// All gestures are ignored unless they happen on the fullscreen EAGLView 
if ([touch.view isKindOfClass:[EAGLView class]] == NO) { 

     return NO; 

} // if ([touch.view isKindOfClass:[EAGLView class]] == NO) 


return YES; 

}

Ma configuration est un EAGLView plein écran avec un UIToolbar au sommet du EAGLView. Il y a un UIBarButtonItem dans la barre d'outils. L'idée ici est que double-tapant n'importe où fait basculer l'apparence de la barre d'outils. Tous les autres gestes doivent apparaître sur EAGLView.

Mon problème est que les taps directement sur le UIBarButtonItem montrent que touch.view est la sous-classe UIView UIToolbarTextButton qui n'est pas documentée et ne peut pas être introspectée.

Huh?

Quelqu'un peut-il suggérer un travail, de préférence qui utilise la bonté introspective d'une certaine forme?

Merci,
Doug

Merci,

Doug

Répondre

3

Vous pouvez calculer la .superview à plusieurs reprises jusqu'à ce que vous atteignez un UIToolbar, EAGLView ou nil.

+0

Les grands esprits se ressemblent ;-). Yah, je suis arrivé à cette solution. Un peu hack-ish mais semble être robuste et fonctionne vraiment. Je suis toujours perplexe pourquoi le bouton n'expose pas une vue accessible au public. J'avais l'impression que tout ce qui est visible est une certaine saveur d'un UIView. Non? – dugla

+0

@dugla: Parce qu'Apple ne veut pas que les gens gâchent directement le contenu d'UIToolbar. – kennytm