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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top