2010-07-31 5 views
3

J'essaie de trouver un bon moyen de faire un tap show/hide mes menus, de la même manière que iBooks. J'ai mis en place UITapGestureRecognizer pour ce faire, mais malheureusement, cela signifie qu'aucun des boutons de l'écran ne fonctionne. Je sais que je peux utiliserUtiliser UITapGestureRecognizer pour afficher/masquer les menus

tapRecognizer.cancelsTouchesInView = NO; 

afin de permettre la touche à traverser, mais bien sûr, les deux choses qui arrivent et je ne peux pas annuler le menu Afficher/Masquer.

Y at-il un moyen pour moi d'empêcher le UITapGestureRecognizer de se produire sur certains boutons ou actions? Ou y a-t-il une meilleure façon de le faire en général?

Merci beaucoup d'avance pour toute aide que vous pouvez me donner!

: -Joe

Répondre

5

Dans le cas où quelqu'un a besoin d'un peu de code pour comprendre la solution de Joe, vous devez d'abord mettre en œuvre le protocole UIGestureRecognizerDelegate (i.e. @interface YourViewController : UIViewController <UIGestureRecognizerDelegate>).

Dans la classe qui implémente le protocole UIGestureRecognizerDelegate, vous devez implémenter - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch. Là, vous pouvez vérifier si touch.view est un bouton. Dans ma mise en œuvre, j'ai seulement utilisé un return !([touch.view isKindOfClass:[UIButton class]]); mais vous devrez peut-être l'étendre si vous avez d'autres composants tactiles dans lesquels vous ne voulez pas déclencher votre reconnaissance de frappe.

3

Je l'ai résolu (ou quelqu'un d'autre résolu pour moi) donc je pensais que je partage avec vous:

Retour NO de la méthode déléguée gestureRecognizer: shouldReceiveTouch: si touch.view est l'un de vos boutons.

+0

Génial, merci de partager votre solution! J'ai eu exactement le même problème. –

Questions connexes