d82592f072
Patches react-native-pager-view to handle iOS 26's interactiveContentPopGestureRecognizer, using the same logic that already exists for RNSPanGestureRecognizer: on the leftmost page, disable the scrollview's pan gesture to let the back gesture through. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
1.4 KiB
Diff
31 lines
1.4 KiB
Diff
diff --git a/node_modules/react-native-pager-view/ios/RNCPagerView.m b/node_modules/react-native-pager-view/ios/RNCPagerView.m
|
|
index adfc7c6..366df60 100644
|
|
--- a/node_modules/react-native-pager-view/ios/RNCPagerView.m
|
|
+++ b/node_modules/react-native-pager-view/ios/RNCPagerView.m
|
|
@@ -498,6 +498,25 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecogni
|
|
return YES;
|
|
}
|
|
|
|
+ // iOS 26+ full-screen back gesture (interactiveContentPopGestureRecognizer)
|
|
+ if (@available(iOS 26, *)) {
|
|
+ if (gestureRecognizer == self.panGestureRecognizer &&
|
|
+ otherGestureRecognizer == self.reactViewController.navigationController.interactiveContentPopGestureRecognizer) {
|
|
+ UIPanGestureRecognizer* panGestureRecognizer = (UIPanGestureRecognizer*) gestureRecognizer;
|
|
+ CGPoint velocity = [panGestureRecognizer velocityInView:self];
|
|
+ BOOL isLTR = [self isLtrLayout];
|
|
+ BOOL isBackGesture = (isLTR && velocity.x > 0) || (!isLTR && velocity.x < 0);
|
|
+
|
|
+ if (self.currentIndex == 0 && isBackGesture) {
|
|
+ self.scrollView.panGestureRecognizer.enabled = false;
|
|
+ } else {
|
|
+ self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
|
|
+ }
|
|
+
|
|
+ return YES;
|
|
+ }
|
|
+ }
|
|
+
|
|
self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
|
|
return NO;
|
|
}
|