@@ -61,7 +61,7 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture {
6161 slider.lastValue = slider.value ;
6262 float value = slider.minimumValue + (rangeWidth * sliderPercent);
6363
64- [slider setValue: discreteValue ( slider, value) animated: YES ];
64+ [slider setValue: [ slider discreteValue: value] animated: YES ];
6565
6666 if (slider.onRNCSliderSlidingStart ) {
6767 slider.onRNCSliderSlidingStart (@{
@@ -83,43 +83,9 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture {
8383 }
8484}
8585
86- static float discreteValue (RNCSlider *sender, float value) {
87- // Check if thumb should reach the maximum value and put it on the end of track if yes.
88- // To avoid affecting the thumb when on maximum, the `step >= (value - maximum)` is not checked.
89- if (sender.step > 0 && value >= sender.maximumValue ) {
90- return sender.maximumValue ;
91- }
92-
93- // If step is set and less than or equal to difference between max and min values,
94- // pick the closest discrete multiple of step to return.
95- if (sender.step > 0 && sender.step <= (sender.maximumValue - sender.minimumValue )) {
96-
97- // Round up when increase, round down when decrease.
98- double (^_round)(double ) = ^(double x) {
99- if (!UIAccessibilityIsVoiceOverRunning ()) {
100- return round (x);
101- } else if (sender.lastValue > value) {
102- return floor (x);
103- } else {
104- return ceil (x);
105- }
106- };
107-
108- return
109- MAX (sender.minimumValue ,
110- MIN (sender.maximumValue ,
111- sender.minimumValue + _round ((value - sender.minimumValue ) / sender.step ) * sender.step
112- )
113- );
114- }
115-
116- // Otherwise, leave value unchanged.
117- return value;
118- }
119-
12086static void RNCSendSliderEvent (RNCSlider *sender, BOOL continuous, BOOL isSlidingStart)
12187{
122- float value = discreteValue ( sender, sender.value ) ;
88+ float value = [ sender discreteValue: sender.value] ;
12389
12490 if (!sender.isSliding ) {
12591 [sender setValue: value animated: NO ];
0 commit comments