Ich habe den folgenden Code in einem ViewDidLoad auf einem UIViewController:
%Vor%und der Zweck ist, eine Ansicht auszulösen, wenn eine Geste mit rechter Kante erkannt wird.
%Vor%Aber ich sehe, dass die "handleRightEdgeSwipe" -Funktion mehrmals ausgelöst wird - manchmal 5 mal, was die Seitenleistenansicht, die gleitend animiert werden sollte, mehrmals in den Flash-Modus verschiebt.
(HINWEIS: Ich habe versucht, auszulösen, dass die Ansicht von einem UIButton aus angezeigt wird, und es funktioniert einwandfrei).
Warum wird die rechte Randgeste mehrmals ausgelöst und wie kann ich sie beheben?
Wie bereits erwähnt, ruft der UIScreenEdgePanGestureRecognizer Ihre Aktion mehrmals auf, wenn sich der Status von GestureRecognizer ändert. Weitere Informationen finden Sie in der Dokumentation zur Eigenschaft state der Klasse UIGestureRecognizer . In Ihrem Fall glaube ich, dass die Antwort, die Sie suchen, darin besteht, zu überprüfen, ob der Status "beendet" ist. Also:
%Vor%Diese Geste ist kein Einzelereignis, sondern kontinuierlich.
handleRightEdgeSwipe:
wird einmal aufgerufen, wenn sich sender.state
ändert oder die Berührung verschoben wird. Du musst UIButton
verschieben, abhängig von state
und locationInView:
der Geste.
Tags und Links objective-c ios uigesturerecognizer