Skip to content

Commit 952ea14

Browse files
committed
Fix buttons in a hacky way to work with the new detector
1 parent 728cc6a commit 952ea14

3 files changed

Lines changed: 23 additions & 3 deletions

File tree

apps/basic-example/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2919,7 +2919,7 @@ SPEC CHECKSUMS:
29192919
FBLazyVector: a293a88992c4c33f0aee184acab0b64a08ff9458
29202920
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
29212921
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
2922-
hermes-engine: db854ab6e74b584dc130d3ed0be3425726bac226
2922+
hermes-engine: eec912f8a125ae0d3ad67b2e7b81a227319aa13b
29232923
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
29242924
RCTDeprecation: 2b70c6e3abe00396cefd8913efbf6a2db01a2b36
29252925
RCTRequired: f3540eee8094231581d40c5c6d41b0f170237a81
@@ -2993,7 +2993,7 @@ SPEC CHECKSUMS:
29932993
RNReanimated: 987d0b9af435441cc2ebc2a32ad06cafe8777d4e
29942994
RNWorklets: 12b2d7cdcb48acbdd0b324d1fa810f849089bd7b
29952995
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
2996-
Yoga: 6ca93c8c13f56baeec55eb608577619b17a4d64e
2996+
Yoga: 7a9f26c70daf0b08d82ec2f862e9a8872442129e
29972997

29982998
PODFILE CHECKSUM: ecce038d8e4749ee17b7dea28be0590cdc8b4836
29992999

packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package com.swmansion.gesturehandler.react
22

33
import android.content.Context
44
import android.view.View
5+
import android.view.ViewGroup
6+
import androidx.core.view.isNotEmpty
57
import com.facebook.react.bridge.ReadableArray
68
import com.facebook.react.uimanager.ThemedReactContext
79
import com.facebook.react.uimanager.UIManagerHelper
@@ -160,6 +162,14 @@ class RNGestureHandlerDetectorView(context: Context) : ReactViewGroup(context) {
160162
// Note: RefreshControl is wrapped with a VirtualDetector, and native gestures for it are attached in `attachVirtualChildren`.
161163
val id = if (child is ReactSwipeRefreshLayout) {
162164
child.getChildAt(0).id
165+
// TODO: figure out how to do it correctly
166+
} else if (child is ViewGroup && child.isNotEmpty()) {
167+
val grandChild = child.getChildAt(0)
168+
if (grandChild is RNGestureHandlerButtonViewManager.ButtonViewGroup) {
169+
grandChild.id
170+
} else {
171+
child.id
172+
}
163173
} else {
164174
child.id
165175
}

packages/react-native-gesture-handler/apple/RNGestureHandlerDetector.mm

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#import <react/renderer/components/rngesturehandler_codegen/Props.h>
1010
#import <react/renderer/components/rngesturehandler_codegen/RCTComponentViewHelpers.h>
1111

12+
#import <React/RCTScrollViewComponentView.h>
1213
#include <unordered_map>
1314

1415
@interface RNGestureHandlerDetector () <RCTRNGestureHandlerDetectorViewProtocol>
@@ -295,10 +296,19 @@ - (void)tryAttachNativeHandlersToChildView
295296

296297
RNGHUIView *view = self.subviews[0];
297298

298-
if ([view isKindOfClass:[RCTViewComponentView class]]) {
299+
// TODO: figure out how to do it correctly
300+
if ([view isKindOfClass:[RCTViewComponentView class]] && ![view isKindOfClass:[RCTScrollViewComponentView class]]) {
299301
RCTViewComponentView *componentView = (RCTViewComponentView *)view;
300302
if (componentView.contentView != nil) {
301303
view = componentView.contentView;
304+
} else if (componentView.subviews.count > 0) {
305+
view = componentView.subviews[0];
306+
if ([view isKindOfClass:[RCTViewComponentView class]]) {
307+
RCTViewComponentView *componentView = (RCTViewComponentView *)view;
308+
if (componentView.contentView != nil) {
309+
view = componentView.contentView;
310+
}
311+
}
302312
}
303313
}
304314

0 commit comments

Comments
 (0)