Pregunta

En mi proyecto tengo la necesidad de usar un UIBITTON (u otro componente) para manejar eventos usando Long Press. Permítanme explicarme que debería tener en cuenta que mantengo hacia abajo en el botón Un temporizador para contar los segundos y la liberación para detener la presión, lo intenté con la gestión de UilongPressGestureRecognizer, pero no es el caso porque recuerdo el evento cuando el botón se mantiene presionado pero Solo si muevo mi dedo, pero desearía que el temporizador se fuera y contó todo el tiempo en el que el botón se mantiene presionado (con el dedo estacionaria) y dejó de contar cuando se libera el dedo.

¿Alguien sabe cómo ayudarme? Gracias

¿Fue útil?

Solución

Use estos dos métodos para eventos de botones. touchDown se llama cuando presiona el botón y touchUp se llamará cuando levante el dedo del botón. Calcule la diferencia de tiempo entre estos dos métodos. También puedes iniciar un temporizador en touchDown y detenerlo/reiniciarlo en touchUp.

//connect this action with Touch up inside
- (IBAction)touchUp:(id)sender {
    NSLog(@"up");
}

//connect this to tocuh down
- (IBAction)touchDown:(id)sender{
    NSLog(@"down");
}

ActualizadoEn la codificación puedes escribir así

[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];

y en xib enter image description here

Otros consejos

Lo mismo que he hecho ... como dijiste sobre uilongpressgestureReconnizer, no puedo entenderlo ... pero puedes escribir tu código por dentro-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }. He hecho lo mismo usando este método y obtuve un resultado exitoso .. :). Incluso no necesitas agregar un temporizador, sino que puedes usar ...

 UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
                                      initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0;
lpgr.delegate = self;

Creo que esto funciona perfectamente ...

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