Estoy detectando si el usuario ha presionado durante 2 segundos:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
Así es como manejo la pulsación larga:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
El texto "doble oo" se imprime dos veces cuando presiono durante más de 2 segundos. ¿Por qué es esto? ¿Cómo puedo arreglarlo?
fuente
Para verificar el estado del UILongPressGestureRecognizer simplemente agregue una declaración if en el método selector:
fuente
Debe verificar el estado correcto, ya que hay diferentes comportamientos para cada estado. Lo más probable es que necesites el
UIGestureRecognizerStateBegan
estado con elUILongPressGestureRecognizer
....
fuente
Solo intenta esto:
C objetivo
Swift 2.2:
fuente
Aquí se explica cómo manejarlo en Swift:
fuente
Swift 3.0:
fuente
su gestor de gestos recibe llamadas para cada estado de gestos. por lo tanto, debe marcar cada estado y poner su código en el estado requerido.
Uno debe preferir usar switch-case sobre if-else:
fuente