Cómo obtener la funcionalidad de Long Press gesto en IOS 3.2 a continuación

StackOverflow https://stackoverflow.com/questions/4565889

  •  14-10-2019
  •  | 
  •  

Pregunta

UILongPressGesture está disponible en iOS VER 3.2 y posteriores. Pero estoy tratando de desarrollar aplicaciones para una máxima compatibilidad y por lo tanto la orientación ios ver2.0

Puede alguien por favor me guía sobre cómo llevar a cabo a largo gesto de prensa en iOS v2.0

¿Fue útil?

Solución

Para un solo dedo, es bastante simple: iniciar un temporizador en el método touchesBegan y desencadenar una acción cuando se activa el temporizador. Cancelar el temporizador si se obtiene una touchesEnded antes de que se dispara. He aquí una aplicación que utiliza el método performSelector:withObject:afterDelay:.

- (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
}

Es posible que también quiere matar el temporizador si el dedo se mueve demasiado lejos.

Con multitáctil, que es un poco más complicado. Vas a tener que seguir la pista de los cuales es el que toque, y decidir qué hacer, por ejemplo, cuando un dedo ha presionado lo suficiente, pero el otro no tiene (o adivinar lo que significa UILongPressGestureRecognizer).

Otros consejos

Implementar los métodos touches... en su punto de vista. Si una determinada cantidad de tiempo que pasa entre touchesBegan:withEvent: y touchesEnded:withEvent: sin ningún tipo de eventos touchesMoved:withEvent:, tiene una pulsación larga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top