2010-05-12 10 views
13

ich meine UISlider eingerichtet haben, um Wert zu reagieren Ereignisse geändert:Nachdem die UIControlEventValueChanged Feuer, wenn UISlider animiert wird?

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

Ich mag würde den Regler in die Position animieren, wo der Benutzer es das letzte Mal die Ansicht verwendet gelassen. Ich tue dies mit:

[customSlider setValue:position animated:YES]; 

Alles funktioniert gut, außer, ich habe einen „tag“ bauen, die den Schieber „Knopf“ hängen über, sodass der Benutzer den Wert sehen kann, wenn Sie den Regler bewegen. Die Position des "Tags" wird festgelegt, wenn UIControlEventValueChanged die Methode "sliderMove" aufruft.

Bei Verwendung der [slider setValue:position animated:YES] verschiebt der Schieberegler, aber das Ereignis wird nicht ausgelöst.

Gibt es einen Delegaten, an den ich gelangen kann, oder eine Veranstaltung, die dieses Szenario abdeckt?

Vielen Dank für jede Hilfe gegeben :)

Antwort

26

Klingt wie ein Fehler, versuchen Sie diese

[slider sendActionsForControlEvents:UIControlEventValueChanged]; 

durch den Aufruf von rechts, nachdem Sie den Wert programmatisch auf Umgehung.

+0

Hallo ChriB und Danke :) Senden der Aktion manuell gezwungen, es zu reagieren und verhalten sich wie es sollte? Ich dachte eigentlich nicht, dass es Delegiertenmethoden während der Animation aufrufen würde. Gibt es eine Möglichkeit, die Geschwindigkeit der Animation zu steuern, wie in UIAnimation, wenn [Slider setValue: 14 animiert: YES], wenn ich eine Frage hinzufügen kann :) – RickiG

+0

Denken Sie nicht, es gibt eine Möglichkeit, das zu ändern. Sie sollten dies als eine neue Frage stellen, vielleicht weiß jemand anderes. :) – bddckr

Verwandte Themen