Aus der Lektüre die UIGestureRecognizer Class Reference es wird angedeutet, dass der API priorisieren die Priorisierung von Berührungen und Gestensteuerung für Sie, um sicherzustellen, handhabt, dass Ihre touchesBegan
und verwandte Verfahren nicht auf der Ansicht aufgerufen werden, es sei denn die Geste Erkenner hat erste fehlgeschlagen:Wie Geste Erkenner und berühren in einem UIView
ein Fenster liefert Touch-Ereignisse zu einem Gestenerkenner, bevor es sie auf die Treffergeprüften Ansicht an den Gestenerkenner liefert. Wenn ein Gestenerkenner den Berührungskontakt in einer Multitouch-Sequenz analysiert und seine Geste nicht erkennt, erhält die Ansicht im Allgemeinen den vollständigen Satz von Berührungen. Wenn ein Gestenerkenner seine Geste erkennt, werden die verbleibenden Berührungen für die Ansicht abgebrochen.
Ich habe eine Wischgeste zu meiner Ansicht hinzugefügt, und es funktioniert. Über eine Protokollierung, wenn ich einen einzelnen Swipe mache, meldet die Methode als solche. Allerdings ist meine touchesBegan
Methode auch Berichterstattung über sein Protokoll, obwohl die touchesCancelled
Methode ist, wie erwartet, auch eine Nachricht erhalten.
Ich will, und erwarte, die Geste zu erkennen, touchesBegan
oder touchesMoved
zu verhindern, dass sie aufgerufen werden.
Also meine Frage ist: für die Gestenerkennung in der Tat Berührungen basierend auf seinem Zustand zu verzögern, gibt es zusätzliche Setup notwendig? Die Doktoren schlagen nichts anderes als notwendig vor.
Mein Setup ist einfach:
swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease];
swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp;
swipeUpTwoFinger.numberOfTouchesRequired=2;
[self addGestureRecognizer:swipeUpTwoFinger];
Ich habe auch diesen Test versucht, um sicherzustellen, dass eine Erkennungs vor der Verarbeitung mit touchesBegan
(dieser Test sollte nicht notwendig sein, wenn Sie glauben, was die Dokumentation über ausgefallen sagen), aber die touchesBegan
noch verarbeitet die Log-Linie nach diesem Test:
if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)
tatsächlich habe ich gerade festgestellt, dass es standardmäßig nicht aktiviert ist. Vielen Dank. – johnbakers