@@ -21,10 +21,12 @@ @implementation RCTSliderManager
2121- (UIView *)view
2222{
2323 RCTSlider *slider = [RCTSlider new ];
24- [slider addTarget: self action: @selector (sliderValueChanged: ) forControlEvents: UIControlEventValueChanged];
25- [slider addTarget: self action: @selector (sliderTouchEnd: ) forControlEvents: (UIControlEventTouchUpInside |
26- UIControlEventTouchUpOutside |
27- UIControlEventTouchCancel)];
24+ [slider addTarget: self action: @selector (sliderValueChanged: )
25+ forControlEvents: UIControlEventValueChanged];
26+ [slider addTarget: self action: @selector (sliderTouchEnd: )
27+ forControlEvents: (UIControlEventTouchUpInside |
28+ UIControlEventTouchUpOutside |
29+ UIControlEventTouchCancel)];
2830 return slider;
2931}
3032
@@ -34,23 +36,29 @@ static void RCTSendSliderEvent(RCTSlider *sender, BOOL continuous)
3436
3537 if (sender.step > 0 &&
3638 sender.step <= (sender.maximumValue - sender.minimumValue )) {
39+
3740 value =
3841 MAX (sender.minimumValue ,
3942 MIN (sender.maximumValue ,
4043 sender.minimumValue + round ((sender.value - sender.minimumValue ) / sender.step ) * sender.step
4144 )
4245 );
43- }
4446
45- if (!continuous) {
46- sender.value = value;
47+ [sender setValue: value animated: YES ];
4748 }
4849
49- if (sender.onChange && (sender.lastValue != value || !continuous)) {
50- sender.onChange (@{
51- @" value" : @(value),
52- @" continuous" : @(continuous),
53- });
50+ if (continuous) {
51+ if (sender.onValueChange && sender.lastValue != value) {
52+ sender.onValueChange (@{
53+ @" value" : @(value),
54+ });
55+ }
56+ } else {
57+ if (sender.onSlidingComplete ) {
58+ sender.onSlidingComplete (@{
59+ @" value" : @(value),
60+ });
61+ }
5462 }
5563
5664 sender.lastValue = value;
@@ -72,7 +80,8 @@ - (void)sliderTouchEnd:(RCTSlider *)sender
7280RCT_EXPORT_VIEW_PROPERTY (maximumValue, float );
7381RCT_EXPORT_VIEW_PROPERTY (minimumTrackTintColor, UIColor);
7482RCT_EXPORT_VIEW_PROPERTY (maximumTrackTintColor, UIColor);
75- RCT_EXPORT_VIEW_PROPERTY (onChange, RCTBubblingEventBlock);
83+ RCT_EXPORT_VIEW_PROPERTY (onValueChange, RCTBubblingEventBlock);
84+ RCT_EXPORT_VIEW_PROPERTY (onSlidingComplete, RCTBubblingEventBlock);
7685RCT_CUSTOM_VIEW_PROPERTY (disabled, BOOL , RCTSlider)
7786{
7887 if (json) {
0 commit comments