Skip to content

Commit 5a85d50

Browse files
committed
[PE-6051] Fix scrolling inside remix contest info
1 parent 6aeb767 commit 5a85d50

File tree

4 files changed

+117
-6
lines changed

4 files changed

+117
-6
lines changed

package-lock.json

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mobile/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,7 +1437,7 @@ PODS:
14371437
- React-Core
14381438
- react-native-notifications (5.1.0):
14391439
- React-Core
1440-
- react-native-pager-view (6.4.0):
1440+
- react-native-pager-view (6.7.1):
14411441
- DoubleConversion
14421442
- glog
14431443
- hermes-engine
@@ -2471,7 +2471,7 @@ SPEC CHECKSUMS:
24712471
react-native-keep-awake: ad1d67f617756b139536977a0bf06b27cec0714a
24722472
react-native-netinfo: 8a7fd3f7130ef4ad2fb4276d5c9f8d3f28d2df3d
24732473
react-native-notifications: 4601a5a8db4ced6ae7cfc43b44d35fe437ac50c4
2474-
react-native-pager-view: d9c1185fdb50e28e25a1d79c5d1094c50789e424
2474+
react-native-pager-view: ad90e78510ae4cb5f91d8b0d7ebb8a794c2ad266
24752475
react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846
24762476
react-native-restart: 7595693413fe3ca15893702f2c8306c62a708162
24772477
react-native-safe-area-context: 3e6db312a77016d4f618550c814d9e236e0c0879

packages/mobile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
"react-native-modal": "13.0.1",
147147
"react-native-modal-datetime-picker": "17.1.0",
148148
"react-native-notifications": "5.1.0",
149-
"react-native-pager-view": "6.4.0",
149+
"react-native-pager-view": "6.7.1",
150150
"react-native-permissions": "4.0.1",
151151
"react-native-qrcode-svg": "6.2.0",
152152
"react-native-radial-gradient": "1.1.4",
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
diff --git a/node_modules/react-native-pager-view/ios/Fabric/RNCPagerViewComponentView.mm b/node_modules/react-native-pager-view/ios/Fabric/RNCPagerViewComponentView.mm
2+
index 652a5c1..c7de2e9 100644
3+
--- a/node_modules/react-native-pager-view/ios/Fabric/RNCPagerViewComponentView.mm
4+
+++ b/node_modules/react-native-pager-view/ios/Fabric/RNCPagerViewComponentView.mm
5+
@@ -14,7 +14,7 @@
6+
7+
using namespace facebook::react;
8+
9+
-@interface RNCPagerViewComponentView () <RCTRNCViewPagerViewProtocol, UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate, UIGestureRecognizerDelegate>
10+
+@interface RNCPagerViewComponentView () <RCTRNCViewPagerViewProtocol, UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate>
11+
12+
@property(nonatomic, assign) UIPanGestureRecognizer* panGestureRecognizer;
13+
14+
@@ -73,11 +73,6 @@ using namespace facebook::react;
15+
_destinationIndex = -1;
16+
_layoutDirection = @"ltr";
17+
_overdrag = NO;
18+
- UIPanGestureRecognizer* panGestureRecognizer = [UIPanGestureRecognizer new];
19+
- self.panGestureRecognizer = panGestureRecognizer;
20+
- panGestureRecognizer.delegate = self;
21+
- [self addGestureRecognizer: panGestureRecognizer];
22+
-
23+
}
24+
25+
return self;
26+
@@ -421,29 +416,6 @@ using namespace facebook::react;
27+
}
28+
29+
30+
-- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
31+
-
32+
- // Recognize simultaneously only if the other gesture is RN Screen's pan gesture (one that is used to perform fullScreenGestureEnabled)
33+
- if (gestureRecognizer == self.panGestureRecognizer && [NSStringFromClass([otherGestureRecognizer class]) isEqual: @"RNSPanGestureRecognizer"]) {
34+
- UIPanGestureRecognizer* panGestureRecognizer = (UIPanGestureRecognizer*) gestureRecognizer;
35+
- CGPoint velocity = [panGestureRecognizer velocityInView:self];
36+
- BOOL isLTR = [self isLtrLayout];
37+
- BOOL isBackGesture = (isLTR && velocity.x > 0) || (!isLTR && velocity.x < 0);
38+
-
39+
- if (self.currentIndex == 0 && isBackGesture) {
40+
- scrollView.panGestureRecognizer.enabled = false;
41+
- } else {
42+
- const auto &viewProps = *std::static_pointer_cast<const RNCViewPagerProps>(_props);
43+
- scrollView.panGestureRecognizer.enabled = viewProps.scrollEnabled;
44+
- }
45+
-
46+
- return YES;
47+
- }
48+
- const auto &viewProps = *std::static_pointer_cast<const RNCViewPagerProps>(_props);
49+
- scrollView.panGestureRecognizer.enabled = viewProps.scrollEnabled;
50+
- return NO;
51+
-}
52+
-
53+
@end
54+
55+
Class<RCTComponentViewProtocol> RNCViewPagerCls(void)
56+
diff --git a/node_modules/react-native-pager-view/ios/RNCPagerView.m b/node_modules/react-native-pager-view/ios/RNCPagerView.m
57+
index 507b45d..4253edc 100644
58+
--- a/node_modules/react-native-pager-view/ios/RNCPagerView.m
59+
+++ b/node_modules/react-native-pager-view/ios/RNCPagerView.m
60+
@@ -8,9 +8,7 @@
61+
#import "RCTOnPageSelected.h"
62+
#import <math.h>
63+
64+
-@interface RNCPagerView () <UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate, UIGestureRecognizerDelegate>
65+
-
66+
-@property(nonatomic, assign) UIPanGestureRecognizer* panGestureRecognizer;
67+
+@interface RNCPagerView () <UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate>
68+
69+
@property(nonatomic, strong) UIPageViewController *reactPageViewController;
70+
@property(nonatomic, strong) RCTEventDispatcher *eventDispatcher;
71+
@@ -48,10 +46,6 @@
72+
_cachedControllers = [NSHashTable hashTableWithOptions:NSHashTableStrongMemory];
73+
_overdrag = NO;
74+
_layoutDirection = @"ltr";
75+
- UIPanGestureRecognizer* panGestureRecognizer = [UIPanGestureRecognizer new];
76+
- self.panGestureRecognizer = panGestureRecognizer;
77+
- panGestureRecognizer.delegate = self;
78+
- [self addGestureRecognizer: panGestureRecognizer];
79+
}
80+
return self;
81+
}
82+
@@ -474,28 +468,6 @@
83+
return scrollDirection;
84+
}
85+
86+
-- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
87+
-
88+
- // Recognize simultaneously only if the other gesture is RN Screen's pan gesture (one that is used to perform fullScreenGestureEnabled)
89+
- if (gestureRecognizer == self.panGestureRecognizer && [NSStringFromClass([otherGestureRecognizer class]) isEqual: @"RNSPanGestureRecognizer"]) {
90+
- UIPanGestureRecognizer* panGestureRecognizer = (UIPanGestureRecognizer*) gestureRecognizer;
91+
- CGPoint velocity = [panGestureRecognizer velocityInView:self];
92+
- BOOL isLTR = [self isLtrLayout];
93+
- BOOL isBackGesture = (isLTR && velocity.x > 0) || (!isLTR && velocity.x < 0);
94+
-
95+
- if (self.currentIndex == 0 && isBackGesture) {
96+
- self.scrollView.panGestureRecognizer.enabled = false;
97+
- } else {
98+
- self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
99+
- }
100+
-
101+
- return YES;
102+
- }
103+
-
104+
- self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
105+
- return NO;
106+
-}
107+
-
108+
- (BOOL)isLtrLayout {
109+
return [_layoutDirection isEqualToString:@"ltr"];
110+
}

0 commit comments

Comments
 (0)