So erhalten Sie Funktionen der langen Presse Geste in iOS unter 3.2
-
14-10-2019 - |
Frage
Uilongpressgesture ist in iOS ver 3.2 und später erhältlich. Aber ich versuche, die Anwendung für maximale Kompatibilität zu entwickeln und damit iOS Ver2.0 zu zielen
Kann mich jemand bitte leiten, wie man eine lange Pressegeste in iOS v2.0 erreicht
Lösung
Für einen einzelnen Finger ist es ziemlich einfach: Starten Sie einen Timer in der touchesBegan
Methode und eine Aktion auslösen, wenn der Timer ausbreitet. Stornieren Sie den Timer, wenn Sie eine bekommen touchesEnded
bevor es feuert. Hier ist eine Implementierung, die das verwendet performSelector:withObject:afterDelay:
Methode.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self performSelector:@selector(fireLongPress)
withObject:nil
afterDelay:LONG_PRESS_THRESHOLD];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[NSObject cancelPreviousPerformRequestsWithTarget:self];
}
- (void)fireLongPress {
// do what you want to do
}
Sie werden wahrscheinlich auch den Timer töten wollen, wenn sich der Finger zu weit bewegt.
Mit Multitouch ist es etwas komplizierter. Sie müssen den Überblick über die Berührung verfolgen und entscheiden, was zu tun ist, z. B. wenn ein Finger lange genug gedrückt hat, aber der andere nicht UILongPressGestureRecognizer
tut).
Andere Tipps
Implementieren Sie die touches...
Methoden aus Ihrer Sicht. Wenn eine bestimmte Zeit zwischen zwischen der Zeit vergeht touchesBegan:withEvent:
und touchesEnded:withEvent:
ohne irgendetwas touchesMoved:withEvent:
Ereignisse, Sie haben eine lange Presse.