2010-05-12 4 views
13

J'ai mis mon UISlider à répondre à la valeur des événements a changé:L'UIControlEventValueChanged est-il déclenché lorsque UISlider est en cours d'animation?

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

Je voudrais animer le curseur vers la position où l'utilisateur a laissé la dernière fois a été utilisé la vue. Je le faire avec:

[customSlider setValue:position animated:YES]; 

Tout fonctionne très bien, sauf, je construire un « bouton » « tag » qui pèse sur les curseurs afin que l'utilisateur peut voir la valeur lors du déplacement du curseur. La position du "tag" est définie lorsque UIControlEventValueChanged appelle la méthode "sliderMove".

Lors de l'utilisation du [slider setValue:position animated:YES], le curseur se déplace mais l'événement ne se déclenche pas.

Y a-t-il un délégué auquel je peux accéder ou un événement qui couvre ce scénario?

Merci pour toute l'aide fournie :)

Répondre

26

Sons comme un bug, essayez de contourner en appelant

[slider sendActionsForControlEvents:UIControlEventValueChanged]; 

droit après avoir défini la valeur d'un programme.

+0

Salut ChriB et Merci :) L'envoi manuel de l'action l'a-t-il forcé à répondre et à se comporter comme il le devrait? En fait, je ne pensais pas qu'il appellerait des méthodes déléguées pendant l'animation. Existe-t-il un moyen de contrôler la vitesse de l'animation, comme dans UIAnimation, en faisant [slider setValue: 14 animated: YES], si je peux ajouter une question :) – RickiG

+0

Ne pensez pas qu'il existe un moyen de changer cela. Vous devriez poser cette question comme une nouvelle question, peut-être quelqu'un d'autre sait. :) – bddckr

Questions connexes