diff --git a/Libraries/Components/SliderIOS/SliderIOS.ios.js b/Libraries/Components/SliderIOS/SliderIOS.ios.js index 424354455..644386c21 100644 --- a/Libraries/Components/SliderIOS/SliderIOS.ios.js +++ b/Libraries/Components/SliderIOS/SliderIOS.ios.js @@ -41,6 +41,13 @@ var SliderIOS = React.createClass({ */ value: PropTypes.number, + /** + * Step value of the slider. The value should be + * between 0 and (maximumValue - minimumValue). + * Default value is 0. + */ + step: PropTypes.number, + /** * Initial minimum value of the slider. Default value is 0. */ @@ -103,6 +110,7 @@ var SliderIOS = React.createClass({ 0 && + sender.step <= (sender.maximumValue - sender.minimumValue)) { + value = + MAX(sender.minimumValue, + MIN(sender.maximumValue, + sender.minimumValue + round((sender.value - sender.minimumValue) / sender.step) * sender.step + ) + ); + } + + if (!continuous) { + sender.value = value; + } + + if (sender.onChange && (sender.lastValue != value || !continuous)) { sender.onChange(@{ - @"value": @(sender.value), + @"value": @(value), @"continuous": @(continuous), }); } + + sender.lastValue = value; } - (void)sliderValueChanged:(RCTSlider *)sender @@ -49,6 +67,7 @@ static void RCTSendSliderEvent(RCTSlider *sender, BOOL continuous) } RCT_EXPORT_VIEW_PROPERTY(value, float); +RCT_EXPORT_VIEW_PROPERTY(step, float); RCT_EXPORT_VIEW_PROPERTY(minimumValue, float); RCT_EXPORT_VIEW_PROPERTY(maximumValue, float); RCT_EXPORT_VIEW_PROPERTY(minimumTrackTintColor, UIColor);