Wykrywam, czy użytkownik naciskał przez 2 sekundy:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
Tak sobie radzę z długim naciśnięciem:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Tekst „double oo” jest drukowany dwukrotnie, gdy naciskam dłużej niż 2 sekundy. Dlaczego to? Jak mogę to naprawić?
źródło
Aby sprawdzić stan UILongPressGestureRecognizer, po prostu dodaj instrukcję if do metody selektora:
źródło
Musisz sprawdzić poprawny stan, ponieważ dla każdego stanu istnieją różne zachowania. Najprawdopodobniej będziesz potrzebować
UIGestureRecognizerStateBegan
stanu zUILongPressGestureRecognizer
....
źródło
Po prostu spróbuj tego:
Cel C
Swift 2.2:
źródło
Oto jak sobie z tym poradzić w Swift:
źródło
Swift 3.0:
źródło
Twój gest obsługi odbiera połączenie dla każdego stanu gestu. więc musisz sprawdzić każdy stan i ustawić kod w wymaganym stanie.
Trzeba preferować używanie przełączników zamiast if-else:
źródło