Dans mon application, j'ai ajouté les nouveaux outils de reconnaissance de gestes disponibles dans le SDK 3.2. Tout semble fonctionner correctement et le temps de réponse à l'écran a été très rapide. Mais pour une raison quelconque, lorsque j'ajoute requireGestureRecognizerToFail
à certains de mes gestes, il y a un délai très visible lorsque le geste est déclenché. Voici un extrait du code que j'utilise pour créer les identifiants de mouvement. Est-ce que quelqu'un sait pourquoi il y a un retard et comment je peux le réparer? J'utilise requireGestureRecognizerToFail
pour empêcher le déclenchement du mouvement SingleTap
lorsque l'utilisateur exécute un DoubleTap
.Reconnaissance gestuelle iPad - Réponse différée
- (void)createGestureRecognizers {
//Single Finger Double-Tap
UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleDoubleTap:)];
singleFingerDTap.numberOfTapsRequired = 2;
[super addGestureRecognizer:singleFingerDTap];
//Single Finger Tap
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleTap:)];
singleFingerTap.numberOfTapsRequired = 1;
[singleFingerTap requireGestureRecognizerToFail:singleFingerDTap];
[self addGestureRecognizer:singleFingerTap];
//Two Finger Pan
UIPanGestureRecognizer *panGesture2 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture2:)];
panGesture2.maximumNumberOfTouches = 2;
[super addGestureRecognizer:panGesture2];
//Single Finger Pan
UIPanGestureRecognizer *panGesture1 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture1:)];
panGesture1.maximumNumberOfTouches = 1;
[panGesture1 requireGestureRecognizerToFail:panGesture2];
[super addGestureRecognizer:panGesture1];
[singleFingerDTap release];
[singleFingerTap release];
[panGesture1 release];
[panGesture2 release];
}
Ce comportement n'est-il pas attendu? Si vous lui demandez de retarder son action jusqu'à ce qu'un autre geste échoue, alors il ne peut pas tirer jusqu'à ce que ce soit fini. Et deux robinets ont un intervalle de temps entre eux (robinets! = Touches), de sorte que vous avez besoin de ce laps de temps pour passer. – Eiko
Merci, c'est logique! – Maddoxx