iphone objective-c events uislider

iphone - Eventos UISlider



objective-c events (4)

Estoy usando un UISlider, se actualiza automáticamente, excepto que el usuario está tocando el botón deslizante. por lo tanto, hice esto en la función que se actualiza automáticamente por un NSTimer:

if (!isSliderTouched) { [progressSlider setValue: progressValue]; }

¿Cómo puedo hacer un seguimiento del final de este evento, cuando el usuario suelta su dedo? Quiero establecer isSliderTouched siempre que el usuario interactúe con este control.

EDITAR : este debería ser el argumento:

  1. el usuario comienza a tocar / tocar UISlider => isSliderTouched = YES
  2. el usuario libera / toca el UISlider => isSliderTouched = NO

Solución :

UIControlEventTouchDown UIControlEventTouchUpInside [progressSlider addTarget:self action:@selector(sliderMoveStart) forControlEvents:UIControlEventTouchDown];

saludos endo


Esto está marcado como resuelto y, sin embargo, me gustaría agregar otra solución a esta que me parece más limpia.

if (!progressSlider.highlighted) { [progressSlider setValue: progressValue]; }


Puedes usar:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

para detectar cuándo se producen los eventos touchDown y touchUp . Puede establecer su bandera en consecuencia.

Supongo que a partir de su fragmento de código está utilizando un UISlider como un medidor de progreso. ¿Has considerado usar un UIProgressView en su lugar?


Una mejor manera de rastrear si el usuario ha terminado de interactuar con UISlider es usar una marca continua.

Si desea activar la acción del control deslizante solo después de que la acción se haya completado y el usuario haya movido el dedo, entonces use

[blurSlider addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged]; blurSlider.continuous = NO;

De lo contrario, por defecto se establece en SÍ.

[blurSlider addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged]; blurSlider.continuous = YES;


cuando el usuario toca el control deslizante, puede establecer un indicador de variable booleana y ponerlo en NO. y en el método de actualización, compruebe si el indicador es SÍ o NO.