Skip to content

Commit 215bbd2

Browse files
committed
fix: improve gestureRecognizer logic
1 parent bba7139 commit 215bbd2

1 file changed

Lines changed: 27 additions & 6 deletions

File tree

ios/RNSScreenStack.mm

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -822,17 +822,38 @@ - (BOOL)isScrollViewPanGestureRecognizer:(UIGestureRecognizer *)gestureRecognize
822822
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
823823
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
824824
{
825-
return (
826-
[gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] &&
827-
[self isScrollViewPanGestureRecognizer:otherGestureRecognizer]);
825+
if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] &&
826+
[self isScrollViewPanGestureRecognizer:otherGestureRecognizer]) {
827+
RNSPanGestureRecognizer *panGestureRecognizer = (RNSPanGestureRecognizer *)gestureRecognizer;
828+
BOOL isBackGesture =
829+
[panGestureRecognizer translationInView:_controller.view].x > 0 && _controller.viewControllers.count > 1;
830+
831+
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
832+
return NO;
833+
}
834+
835+
if (isBackGesture) {
836+
return NO;
837+
}
838+
return YES;
839+
}
840+
return NO;
828841
}
829842

830843
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
831844
shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
832845
{
833-
return (
834-
[gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]] &&
835-
[self isScrollViewPanGestureRecognizer:otherGestureRecognizer]);
846+
if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]] &&
847+
[self isScrollViewPanGestureRecognizer:otherGestureRecognizer]) {
848+
RNSPanGestureRecognizer *panGestureRecognizer = (RNSPanGestureRecognizer *)gestureRecognizer;
849+
BOOL isBackGesture =
850+
[panGestureRecognizer translationInView:_controller.view].x > 0 && _controller.viewControllers.count > 1;
851+
852+
if (isBackGesture) {
853+
return YES;
854+
}
855+
}
856+
return NO;
836857
}
837858

838859
- (void)insertReactSubview:(RNSScreenView *)subview atIndex:(NSInteger)atIndex

0 commit comments

Comments
 (0)