@@ -47,12 +47,12 @@ - (instancetype)initWithFrame:(CGRect)frame
4747 forControlEvents: (UIControlEventTouchUpInside |
4848 UIControlEventTouchUpOutside |
4949 UIControlEventTouchCancel)];
50-
50+
5151 UITapGestureRecognizer *tapGesturer;
5252 tapGesturer = [[UITapGestureRecognizer alloc ] initWithTarget: self action: @selector (tapHandler: )];
5353 [tapGesturer setNumberOfTapsRequired: 1 ];
5454 [slider addGestureRecognizer: tapGesturer];
55-
55+
5656 slider.value = (float )defaultProps->value ;
5757 self.contentView = slider;
5858 }
@@ -65,12 +65,12 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture {
6565 }
6666 RNCSlider *slider = (RNCSlider *)gesture.view ;
6767 slider.isSliding = _isSliding;
68-
68+
6969 // Ignore this tap if in the middle of a slide.
7070 if (_isSliding) {
7171 return ;
7272 }
73-
73+
7474 if (!slider.tapToSeek ) {
7575 return ;
7676 }
@@ -88,14 +88,14 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture {
8888 }
8989
9090 [slider setValue: [slider discreteValue: value] animated: YES ];
91-
91+
9292 std::dynamic_pointer_cast<const RNCSliderEventEmitter>(_eventEmitter)
9393 ->onRNCSliderSlidingStart (RNCSliderEventEmitter::OnRNCSliderSlidingStart{.value = static_cast <Float>(slider.lastValue )});
94-
94+
9595 // Trigger onValueChange to address https://github.com/react-native-community/react-native-slider/issues/212
9696 std::dynamic_pointer_cast<const RNCSliderEventEmitter>(_eventEmitter)
9797 ->onRNCSliderValueChange (RNCSliderEventEmitter::OnRNCSliderValueChange{.value = static_cast <Float>(slider.value )});
98-
98+
9999 std::dynamic_pointer_cast<const RNCSliderEventEmitter>(_eventEmitter)
100100 ->onRNCSliderSlidingComplete (RNCSliderEventEmitter::OnRNCSliderSlidingComplete{.value = static_cast <Float>(slider.value )});
101101}
@@ -122,7 +122,7 @@ - (void)sliderTouchEnd:(RNCSlider *)sender
122122- (void )RNCSendSliderEvent : (RNCSlider *)sender withContinuous : (BOOL )continuous isSlidingStart : (BOOL )isSlidingStart
123123{
124124 float value = [sender discreteValue: sender.value];
125-
125+
126126 if (value < sender.lowerLimit ) {
127127 value = sender.lowerLimit ;
128128 [sender setValue: value animated: NO ];
@@ -134,7 +134,7 @@ - (void)RNCSendSliderEvent:(RNCSlider *)sender withContinuous:(BOOL)continuous i
134134 if (!sender.isSliding ) {
135135 [sender setValue: value animated: NO ];
136136 }
137-
137+
138138 if (continuous) {
139139 if (sender.lastValue != value) {
140140 std::dynamic_pointer_cast<const RNCSliderEventEmitter>(_eventEmitter)
@@ -150,15 +150,15 @@ - (void)RNCSendSliderEvent:(RNCSlider *)sender withContinuous:(BOOL)continuous i
150150 ->onRNCSliderSlidingStart (RNCSliderEventEmitter::OnRNCSliderSlidingStart{.value = static_cast <Float>(value)});
151151 }
152152 }
153-
153+
154154 sender.lastValue = value;
155155}
156156
157157- (void )updateProps : (const Props::Shared &)props oldProps : (const Props::Shared &)oldProps
158158{
159159 const auto &oldScreenProps = *std::static_pointer_cast<const RNCSliderProps>(_props);
160160 const auto &newScreenProps = *std::static_pointer_cast<const RNCSliderProps>(props);
161-
161+
162162 if (oldScreenProps.value != newScreenProps.value ) {
163163 if (!slider.isSliding ) {
164164 slider.value = newScreenProps.value ;
@@ -176,11 +176,19 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
176176 if (oldScreenProps.maximumValue != newScreenProps.maximumValue ) {
177177 [slider setMaximumValue: newScreenProps.maximumValue];
178178 }
179- if (oldScreenProps.lowerLimit != newScreenProps.lowerLimit ) {
180- slider.lowerLimit = newScreenProps.lowerLimit ;
179+ if (slider.lowerLimit != newScreenProps.lowerLimit ) {
180+ if (newScreenProps.lowerLimit > slider.upperLimit ){
181+ NSLog (@" Invalid configuration: upperLimit < lowerLimit; lowerLimit not set" );
182+ } else {
183+ slider.lowerLimit = newScreenProps.lowerLimit ;
184+ }
181185 }
182- if (oldScreenProps.upperLimit != newScreenProps.upperLimit ) {
183- slider.upperLimit = newScreenProps.upperLimit ;
186+ if (slider.upperLimit != newScreenProps.upperLimit ) {
187+ if (newScreenProps.upperLimit < slider.lowerLimit ){
188+ NSLog (@" Invalid configuration: upperLimit < lowerLimit; upperLimit not set" );
189+ } else {
190+ slider.upperLimit = newScreenProps.upperLimit ;
191+ }
184192 }
185193 if (oldScreenProps.tapToSeek != newScreenProps.tapToSeek ) {
186194 slider.tapToSeek = newScreenProps.tapToSeek ;
0 commit comments