2010-05-12 8 views
13

he puesto mi UISlider para responder a valor cambiado eventos:¿Se ha disparado el UIControlEventValueChanged cuando se está animando UISlider?

[customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged]; 
[customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown]; 
[customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside]; 

me gustaría animar el control deslizante a la posición en la que el usuario lo dejó la última vez que se utilizó la vista. Puedo hacer esto con:

[customSlider setValue:position animated:YES]; 

Todo funciona bien, excepto, tengo construir una "etiqueta" que se cierne sobre la "perilla" deslizadores de modo que el usuario puede ver el valor cuando se mueve el deslizador. La posición de la "etiqueta" se establece cuando UIControlEventValueChanged llama al método "sliderMove".

Al usar el [slider setValue:position animated:YES], el control deslizante se mueve, pero el evento no se dispara.

¿Hay un delegado al que pueda acceder o un evento que cubra este escenario?

Gracias por cualquier ayuda :) dan

Respuesta

26

Suena como un insecto, tratan de solucionar este llamando

[slider sendActionsForControlEvents:UIControlEventValueChanged]; 

inmediatamente después de establecer el valor mediante programación.

+0

Hola, ChriB y gracias :) ¿El envío de la acción manualmente lo forzó a responder y comportarse como debería? De hecho, no creo que llame a los métodos de delegado durante la animación. ¿Hay alguna manera de controlar la velocidad de la animación, como en UIAnimation, al hacer [slider setValue: 14 animated: YES], si puedo agregar una pregunta :) – RickiG

+0

No creo que haya una manera de cambiar eso. Debería preguntar esto como una nueva pregunta, quizás alguien más lo sepa. :) – bddckr

Cuestiones relacionadas