2010-04-25 4 views

Répondre

4

Si vous n'êtes pas cibler 3.2+:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] == 2) { 
     //etc 
    } 
} 
+0

Merci eman! Résolu mon problème! –

2

Définissez la propriété multiTouchEnabled sur YES.

0

Si vos besoins le permettent, utilisez UITapGestureRecognizer. Dans le cas contraire, mettre en œuvre les méthodes de UIResponder suivantes dans votre UIView personnalisé:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 

piste tout au long pour voir combien il y avait des touches et si elles ou non déplacé plus que votre seuil robinet/glisser. Vous devez implémenter les quatre méthodes.

10

Si vous pouvez cibler OS 3.2 ou au-dessus, vous pouvez utiliser un UITapGestureRecognizer. C'est vraiment facile à utiliser: il suffit de le configurer et de l'attacher à la vue. Lorsque le geste est effectué, il déclenche l'action de la cible de gestureRecognizer.

Exemple:

UITapGestureRecognizer * r = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewWasDoubleTapped:)]; 
[r setNumberOfTapsRequired:2]; 
[[self view] addGestureRecognizer:r]; 
[r release]; 

Ensuite, vous mettre en œuvre juste une méthode - (void) viewWasDoubleTapped:(id)sender, et qui va s'invoqué lorsque [self view] obtient tapé deux fois.

EDIT

Je viens de réaliser que vous pourriez parlerez détecter un seul robinet avec deux doigts. Si c'est le cas, vous pouvez le faire

[r setNumberOfTouchesRequired:2]
.

Le principal avantage de cette approche est que vous n'avez pas besoin de créer une sous-classe de vue personnalisée

Questions connexes