diff --git a/package/ios/RNCSliderComponentView.mm b/package/ios/RNCSliderComponentView.mm index 5f457933..264d38f7 100644 --- a/package/ios/RNCSliderComponentView.mm +++ b/package/ios/RNCSliderComponentView.mm @@ -77,7 +77,14 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture { CGPoint touchPoint = [gesture locationInView:slider]; float rangeWidth = slider.maximumValue - slider.minimumValue; - float sliderPercent = touchPoint.x / slider.bounds.size.width; + + float sliderPercent; + if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:slider.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft) { + sliderPercent = 1.0 - (touchPoint.x / slider.bounds.size.width); + } else { + sliderPercent = touchPoint.x / slider.bounds.size.width; + } + slider.lastValue = slider.value; float value = slider.minimumValue + (rangeWidth * sliderPercent); diff --git a/package/ios/RNCSliderManager.m b/package/ios/RNCSliderManager.m index 67c6e958..9756769a 100644 --- a/package/ios/RNCSliderManager.m +++ b/package/ios/RNCSliderManager.m @@ -57,7 +57,14 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture { CGPoint touchPoint = [gesture locationInView:slider]; float rangeWidth = slider.maximumValue - slider.minimumValue; - float sliderPercent = touchPoint.x / slider.bounds.size.width; + + float sliderPercent; + if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:slider.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft) { + sliderPercent = 1.0 - (touchPoint.x / slider.bounds.size.width); + } else { + sliderPercent = touchPoint.x / slider.bounds.size.width; + } + slider.lastValue = slider.value; float value = slider.minimumValue + (rangeWidth * sliderPercent);