Comment puis-je détecter deux doigts sur l'iPhone?Comment détecter deux doigts sur l'iPhone?
Répondre
Si vous n'êtes pas cibler 3.2+:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if ([touches count] == 2) {
//etc
}
}
Définissez la propriété multiTouchEnabled
sur YES
.
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.
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
Merci eman! Résolu mon problème! –