From fcbedfa5eb8e9a90589b50ddabf2c679822a4cab Mon Sep 17 00:00:00 2001 From: Ayman Hossam Date: Wed, 25 Dec 2024 16:48:39 +0200 Subject: [PATCH] fix: ios inverted tap to seek in rtl --- package/ios/RNCSliderComponentView.mm | 9 ++++++++- package/ios/RNCSliderManager.m | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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);