From 71f23f09e2816dc0d9001bd4b8445be1fa2fb240 Mon Sep 17 00:00:00 2001 From: Kacper Kafara Date: Thu, 16 Oct 2025 16:41:43 +0200 Subject: [PATCH] Debugging setup --- apps/App.tsx | 8 ++-- apps/src/tests/Test1072.tsx | 7 +--- apps/src/tests/TestBottomTabs/index.tsx | 3 +- ios/RNSScreenStack.mm | 49 ++++++++++++++++++++++--- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/apps/App.tsx b/apps/App.tsx index e35edb836a..3ee8ee63fa 100644 --- a/apps/App.tsx +++ b/apps/App.tsx @@ -1,11 +1,11 @@ import React from 'react'; import { enableFreeze } from 'react-native-screens'; -import Example from './Example'; -// import * as Test from './src/tests'; +// import Example from './Example'; +import * as Test from './src/tests'; enableFreeze(true); export default function App() { - return ; - // return ; + // return ; + return ; } diff --git a/apps/src/tests/Test1072.tsx b/apps/src/tests/Test1072.tsx index f6a3b1403c..7606e1ce5e 100644 --- a/apps/src/tests/Test1072.tsx +++ b/apps/src/tests/Test1072.tsx @@ -46,8 +46,6 @@ export default function App() { @@ -84,9 +82,8 @@ function generatePhotos( ): JSX.Element[] { const startFrom = Math.floor(Math.random() * 20) + 10; return Array.from({ length: amount }, (_, index) => { - const uri = `https://picsum.photos/id/${ - startFrom + index - }/${width}/${height}`; + const uri = `https://picsum.photos/id/${startFrom + index + }/${width}/${height}`; return ; }); } diff --git a/apps/src/tests/TestBottomTabs/index.tsx b/apps/src/tests/TestBottomTabs/index.tsx index 552ded718b..c8b7ba4176 100644 --- a/apps/src/tests/TestBottomTabs/index.tsx +++ b/apps/src/tests/TestBottomTabs/index.tsx @@ -40,7 +40,7 @@ const TAB_CONFIGS: TabConfiguration[] = [ selectedIcon: { sfSymbolName: 'house.fill', }, - // iconResourceName: 'sym_call_incoming', // Android specific + iconResourceName: 'sym_call_incoming', // Android specific iconResource: require('../../../assets/variableIcons/icon_fill.png'), }, component: Tab1, @@ -104,7 +104,6 @@ const TAB_CONFIGS: TabConfiguration[] = [ iconResourceName: 'sym_call_missed', // Android specific iconResource: require('../../../assets/variableIcons/icon.png'), title: 'Tab2', - orientation: 'landscape', }, component: Tab2, safeAreaConfiguration: { diff --git a/ios/RNSScreenStack.mm b/ios/RNSScreenStack.mm index 51f021831a..48628fa620 100644 --- a/ios/RNSScreenStack.mm +++ b/ios/RNSScreenStack.mm @@ -895,7 +895,9 @@ - (void)cancelTouchesInParent - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + NSLog(@"GR should begin: %@", gestureRecognizer); if (_disableSwipeBack) { + NSLog(@"Return: NO"); return NO; } RNSScreenView *topScreen = _reactSubviews.lastObject; @@ -919,15 +921,19 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer if (customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) { _isFullWidthSwipingWithPanGesture = YES; [self cancelTouchesInParent]; + NSLog(@"Return: YES"); return YES; } + NSLog(@"Return: NO"); return NO; } else { if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) { _isFullWidthSwipingWithPanGesture = YES; [self cancelTouchesInParent]; + NSLog(@"Return: YES"); return YES; } + NSLog(@"Return: NO"); return NO; } } @@ -945,17 +951,21 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer (isRTL && isSlideFromLeft && edges == UIRectEdgeLeft) || (!isRTL && edges == UIRectEdgeLeft); if (isCorrectEdge) { [self cancelTouchesInParent]; + NSLog(@"Return: YES"); return YES; } } + NSLog(@"Return: NO"); return NO; } else { if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) { // it should only recognize with `customAnimationOnSwipe` set + NSLog(@"Return: NO"); return NO; } // _UIParallaxTransitionPanGestureRecognizer (other...) [self cancelTouchesInParent]; + NSLog(@"Return: YES"); return YES; } @@ -1177,6 +1187,7 @@ - (BOOL)isScrollViewPanGestureRecognizer:(UIGestureRecognizer *)gestureRecognize // Be careful when adding another type of gesture recognizer. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePressOrTouchEvent:(NSObject *)event { + NSLog(@"GR shouldReceiveEvent %@", gestureRecognizer); RNSScreenView *topScreen = _reactSubviews.lastObject; for (RNSScreenView *s in _reactSubviews.reverseObjectEnumerator) { @@ -1190,6 +1201,7 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive if (![topScreen isKindOfClass:[RNSScreenView class]] || !topScreen.gestureEnabled || _controller.viewControllers.count < 2 || [topScreen isModal]) { + NSLog(@"Return NO - early return"); return NO; } @@ -1202,12 +1214,26 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive // either interactiveContentPopGestureRecognizer or RNSPanGestureRecognizer, // then we allow them to proceed iff full screen swipe is enabled. if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) { - return customAnimationOnSwipePropSetAndSelectedAnimationIsCustom ? topScreen.isFullScreenSwipeEffectivelyEnabled - : NO; + const BOOL rv = customAnimationOnSwipePropSetAndSelectedAnimationIsCustom + ? topScreen.isFullScreenSwipeEffectivelyEnabled + : NO; + NSLog(@"Return %d - gr custom + fullscreenenabled", rv); + return rv; } if (gestureRecognizer == _controller.interactiveContentPopGestureRecognizer) { - return customAnimationOnSwipePropSetAndSelectedAnimationIsCustom ? NO - : topScreen.isFullScreenSwipeEffectivelyEnabled; + const BOOL rv = customAnimationOnSwipePropSetAndSelectedAnimationIsCustom + ? NO + : topScreen.isFullScreenSwipeEffectivelyEnabled; + NSLog(@"Return %d - gr ICPGR + fullscreenenabled", rv); + return rv; + } + if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) { + const BOOL rv = customAnimationOnSwipePropSetAndSelectedAnimationIsCustom ? YES : NO; + return rv; + } + if (gestureRecognizer == _controller.interactivePopGestureRecognizer) { + const BOOL rv = customAnimationOnSwipePropSetAndSelectedAnimationIsCustom ? NO : YES; + return rv; } } else { // We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled. @@ -1223,12 +1249,14 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive #endif // check for iOS >= 26 // RNSScreenEdgeGestureRecognizer || _UIParallaxTransitionPanGestureRecognizer + NSLog(@"Return YES - fallback"); return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press; { - return [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:press]; + const BOOL rv = [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:press]; + return rv; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; @@ -1239,6 +1267,9 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + NSLog(@"GR shouldRecognizeSIMULTANEOUSLY"); + NSLog(@"First: %@", gestureRecognizer); + NSLog(@"Second: %@", otherGestureRecognizer); if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] && [self isScrollViewPanGestureRecognizer:otherGestureRecognizer]) { RNSPanGestureRecognizer *panGestureRecognizer = (RNSPanGestureRecognizer *)gestureRecognizer; @@ -1246,12 +1277,15 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer _controller.viewControllers.count > 1; if (gestureRecognizer.state == UIGestureRecognizerStateBegan || isBackGesture) { + NSLog(@"Return NO - RNSPanGR + Scrollview + began state or back gesture"); return NO; } + NSLog(@"Return YES - RNSPanGR + Scrollview"); return YES; } + NSLog(@"Return NO"); return NO; } @@ -1259,13 +1293,18 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + NSLog(@"GR shouldRequireFailure"); + NSLog(@"First: %@", gestureRecognizer); + NSLog(@"Second: %@", otherGestureRecognizer); if (@available(iOS 26, *)) { if (gestureRecognizer == _controller.interactiveContentPopGestureRecognizer && [self isScrollViewPanGestureRecognizer:otherGestureRecognizer]) { + NSLog(@"Return YES - ICPGR + Scrollview"); return YES; } } + NSLog(@"Return NO"); return NO; } #endif // check for iOS >= 26