Skip to content

Commit b0f5f46

Browse files
fix(#249): regarding issue introduced in IOS 14 UISlider needs to forc… (#450)
* fix(249): regarding issue introduced in IOS 14 UISlider needs to force rerender while disabling * Use slider object for setDisabled method call in ComponentView RNCSliderComponentView gets compiled for new architecture which is why the CI fails for Fabric iOS. This commit fixes that. * Remove redundant comment The comment was about the layoutSubviews that fixes issue of outdated Slider layout when changing the enabled/disabled state. More: https://developer.apple.com/forums/thread/658526 Co-authored-by: Bartosz Klonowski <[email protected]> Co-authored-by: BartoszKlonowski <[email protected]>
1 parent 1eb6df0 commit b0f5f46

File tree

4 files changed

+10
-3
lines changed

4 files changed

+10
-3
lines changed

package/ios/RNCSlider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@
2828
@property (nonatomic, strong) NSArray *accessibilityIncrements;
2929

3030
- (float) discreteValue:(float)value;
31+
- (void) setDisabled:(bool)disabled;
3132

3233
@end

package/ios/RNCSlider.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,12 @@ - (void)setInverted:(BOOL)inverted
132132
}
133133
}
134134

135+
- (void)setDisabled:(BOOL)disabled
136+
{
137+
self.enabled = !disabled;
138+
[self layoutSubviews];
139+
}
140+
135141
- (float)discreteValue:(float)value
136142
{
137143
if (self.step > 0 && value >= self.maximumValue) {

package/ios/RNCSliderComponentView.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
152152
}
153153
}
154154
if (oldScreenProps.disabled != newScreenProps.disabled) {
155-
slider.enabled = !newScreenProps.disabled;
155+
[slider setDisabled: newScreenProps.disabled];
156156
}
157157
if (oldScreenProps.step != newScreenProps.step) {
158158
slider.step = newScreenProps.step;

package/ios/RNCSliderManager.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ - (void)sliderTouchEnd:(RNCSlider *)sender
159159
RCT_CUSTOM_VIEW_PROPERTY(disabled, BOOL, RNCSlider)
160160
{
161161
if (json) {
162-
view.enabled = !([RCTConvert BOOL:json]);
162+
[view setDisabled: [RCTConvert BOOL:json]];
163163
} else {
164-
view.enabled = defaultView.enabled;
164+
[view setDisabled: defaultView.enabled];
165165
}
166166
}
167167

0 commit comments

Comments
 (0)