2010-09-21 8 views
0

Très étrange. J'ai mis en place un certain nombre de reconnaisseurs de gestes de balayage, tout fonctionne bien. J'ai juste ajouté un reconnaisseur de geste de robinet, cependant, et quand je cours le simulateur et clique je n'obtiens aucun effet. Dans le code suivant, [self doMethod] ne se déclenchera jamais. J'ai mis en place tous les reconnaisseurs de gestes dans viewDidLoad pour mon contrôleur. J'utilise un UIWebView, donc il pourrait y avoir un peu de funkiness là-bas. Des idées?iOS UITapGestureRecognizer ne fait rien du tout?

Je mis en place le recongnizer normalement:

UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc]initWithTarget:self  action:@selector(handleTap:)]; 
[self.view addGestureRecognizer:tapper]; 

La méthode handleTap.

-(IBAction)handleTap:(UITapGestureRecognizer*)sender{ 
    [self doMethod]; 
} 
+0

J'utilise - (void) pour elle, et il fonctionne . * indice *: N'oubliez pas de libérer "tapper". – hellozimi

+0

Hmm, pas de chance de le changer pour - (vide). Très curieux. – Chris

+1

fyi - IBAction est une macro pour void. IBAction est utilisé par XCode/Interface Builder pour marquer les méthodes qui contrôlent les événements auxquels il peut être connecté. – TomH

Répondre

1

Je ne suis pas 100% sûr de ce que les paramètres par défaut des propriétés « numberOfTapsRequired » et « numberOfTouchesRequired » pour UITapGestureRecognizer sont, mais vous pouvez essayer d'initialiser ceux-ci et voir si cela à la vitesse qu'il donne le coup. De plus, si votre UIWebView couvre toute la vue, les touches ne seront peut-être jamais reçues par la vue du bas (encore une fois, pas sûr à 100%). Vous pouvez essayer d'ajouter les reconnaisseurs à la vue Web.

+0

Bizarre. Je travaillais sur quelque chose sans rapport avec une sorte de vue qui "surgit" sur une vue web. Je l'ai fait définir la vue Web sous-jacente [setUserInterActionEnabled: NO], quand je fais cela, et tapa sur l'écran, la fonction handleTap a donné le coup d'envoi. On dirait que la vue web ignore les taps mais pas les balayages. Probablement pour garder les liens, etc, fonctionnant correctement? – Chris

+0

Des sons presque identiques à ceux de vos reconnaisseurs sont ajoutés à la vue qui apparaît. Je travaille actuellement sur un projet où les reconnaisseurs de frappe et de balayage sont ajoutés directement à un webview (comme dans [webview addGestureRecognizer: tapper]) et ils semblent fonctionner à chaque fois. –

+0

Hmm, je vais continuer à explorer. Le reconnaisseur de prise n'est pas ajouté à la vue contextuelle. Cela ne fonctionne que lorsque vous tapez à l'extérieur de la bordure, dans la plus grande zone. Cependant, d'autres interactions dans la zone plus large (liens, etc.) sont toujours désactivées. – Chris

2

Cela devrait fonctionner

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

UIWebView a ses propres gestureRecognizers

Cela dit UIWebView que nous allons utiliser gestureRecognizers aditional