diff --git a/node_modules/react-native-pager-view/ios/ReactNativePageView.m b/node_modules/react-native-pager-view/ios/ReactNativePageView.m index ab0fc7f..fbbf19f 100644 --- a/node_modules/react-native-pager-view/ios/ReactNativePageView.m +++ b/node_modules/react-native-pager-view/ios/ReactNativePageView.m @@ -1,6 +1,6 @@ #import "ReactNativePageView.h" -#import "React/RCTLog.h" +#import #import #import "UIViewController+CreateExtension.h" @@ -9,7 +9,7 @@ #import "RCTOnPageSelected.h" #import -@interface ReactNativePageView () +@interface ReactNativePageView () @property(nonatomic, strong) UIPageViewController *reactPageViewController; @property(nonatomic, strong) RCTEventDispatcher *eventDispatcher; @@ -80,6 +80,10 @@ [self setupInitialController]; } + UIPanGestureRecognizer* panGestureRecognizer = [UIPanGestureRecognizer new]; + panGestureRecognizer.delegate = self; + [self addGestureRecognizer: panGestureRecognizer]; + if (self.reactViewController.navigationController != nil && self.reactViewController.navigationController.interactivePopGestureRecognizer != nil) { [self.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.reactViewController.navigationController.interactivePopGestureRecognizer]; } @@ -463,4 +467,21 @@ - (BOOL)isLtrLayout { return [_layoutDirection isEqualToString:@"ltr"]; } + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (otherGestureRecognizer == self.scrollView.panGestureRecognizer) { + UIPanGestureRecognizer* p = (UIPanGestureRecognizer*) gestureRecognizer; + CGPoint velocity = [p velocityInView:self]; + if (self.currentIndex == 0 && velocity.x > 0) { + self.scrollView.panGestureRecognizer.enabled = false; + return NO; + } else { + self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled; + } + } else { + self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled; + } + + return YES; +} @end