In meiner App habe ich die neuen Gesture Recognizer hinzugefügt, die im 3.2 SDK verfügbar sind. Alles scheint korrekt zu funktionieren und die Reaktionszeit auf dem Bildschirm war sehr schnell. Aber aus irgendeinem Grund, wenn ich zu einigen meiner Gesten requireGestureRecognizerToFail
hinzufüge, gibt es eine sehr sichtbare Verzögerung, wenn die Geste ausgelöst wird. Unten ist ein Ausschnitt des Codes, mit dem ich die Gestenerkenner erstelle. Weiß jemand, warum es eine Verzögerung gibt und wie ich es beheben kann? Ich verwende requireGestureRecognizerToFail
, um zu verhindern, dass die SingleTap
Geste ausgelöst wird, wenn der Benutzer eine DoubleTap
ausführt.iPad Gesture Recognizer - Verzögerte Antwort
- (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];
}
Ist das nicht erwartetes Verhalten? Wenn Sie es bitten, seine Aktion zu verzögern, bis eine andere Geste fehlschlägt, kann es nicht auslösen, bis dies vorbei ist. Und zwei Taps haben eine Zeitspanne zwischen ihnen (Taps! = Berührt), so dass Sie diese Zeitspanne benötigen, um zu bestehen. – Eiko
Danke, das macht Sinn! – Maddoxx