Ich erkenne, ob der Benutzer 2 Sekunden lang gedrückt hat:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
So gehe ich mit der langen Presse um:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Der Text "double oo" wird zweimal gedruckt, wenn ich länger als 2 Sekunden drücke. Warum ist das? Wie kann ich das beheben?
quelle
Um den Status des UILongPressGestureRecognizer zu überprüfen, fügen Sie einfach eine if-Anweisung zur Selector-Methode hinzu:
quelle
Sie müssen den richtigen Status überprüfen, da es für jeden Status unterschiedliche Verhaltensweisen gibt. Höchstwahrscheinlich werden Sie den
UIGestureRecognizerStateBegan
Staat mit dem brauchenUILongPressGestureRecognizer
....
quelle
Versuchen Sie einfach Folgendes:
Ziel c
Swift 2.2:
quelle
So geht's in Swift:
quelle
Swift 3.0:
quelle
Ihr Gestenhandler erhält einen Anruf für jeden Gestenstatus. Sie müssen also für jeden Status eine Prüfung durchführen und Ihren Code in den erforderlichen Status versetzen.
Man muss es vorziehen, Switch-Case gegenüber if-else zu verwenden:
quelle