File tree Expand file tree Collapse file tree
Libraries/Components/SliderIOS Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -41,6 +41,13 @@ var SliderIOS = React.createClass({
4141 */
4242 value : PropTypes . number ,
4343
44+ /**
45+ * Step value of the slider. The value should be
46+ * between 0 and (maximumValue - minimumValue).
47+ * Default value is 0.
48+ */
49+ step : PropTypes . number ,
50+
4451 /**
4552 * Initial minimum value of the slider. Default value is 0.
4653 */
@@ -103,6 +110,7 @@ var SliderIOS = React.createClass({
103110 < RCTSlider
104111 style = { [ styles . slider , this . props . style ] }
105112 value = { this . props . value }
113+ step = { this . props . step }
106114 maximumValue = { this . props . maximumValue }
107115 minimumValue = { this . props . minimumValue }
108116 minimumTrackTintColor = { this . props . minimumTrackTintColor }
Original file line number Diff line number Diff line change 1414@interface RCTSlider : UISlider
1515
1616@property (nonatomic , copy ) RCTBubblingEventBlock onChange;
17+ @property (nonatomic , assign ) float step;
18+ @property (nonatomic , assign ) float lastValue;
1719
1820@end
Original file line number Diff line number Diff line change @@ -30,12 +30,30 @@ - (UIView *)view
3030
3131static void RCTSendSliderEvent (RCTSlider *sender, BOOL continuous)
3232{
33- if (sender.onChange ) {
33+ float value = sender.value ;
34+
35+ if (sender.step > 0 &&
36+ sender.step <= (sender.maximumValue - sender.minimumValue )) {
37+ value =
38+ MAX (sender.minimumValue ,
39+ MIN (sender.maximumValue ,
40+ sender.minimumValue + round ((sender.value - sender.minimumValue ) / sender.step ) * sender.step
41+ )
42+ );
43+ }
44+
45+ if (!continuous) {
46+ sender.value = value;
47+ }
48+
49+ if (sender.onChange && (sender.lastValue != value || !continuous)) {
3450 sender.onChange (@{
35- @" value" : @(sender. value ),
51+ @" value" : @(value),
3652 @" continuous" : @(continuous),
3753 });
3854 }
55+
56+ sender.lastValue = value;
3957}
4058
4159- (void )sliderValueChanged : (RCTSlider *)sender
@@ -49,6 +67,7 @@ - (void)sliderTouchEnd:(RCTSlider *)sender
4967}
5068
5169RCT_EXPORT_VIEW_PROPERTY (value, float );
70+ RCT_EXPORT_VIEW_PROPERTY (step, float );
5271RCT_EXPORT_VIEW_PROPERTY (minimumValue, float );
5372RCT_EXPORT_VIEW_PROPERTY (maximumValue, float );
5473RCT_EXPORT_VIEW_PROPERTY (minimumTrackTintColor, UIColor);
You can’t perform that action at this time.
0 commit comments