react-native-gesture-handler 2.10.2 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@
3
3
  #import <React/RCTComponent.h>
4
4
  #import <React/RCTEventDispatcher.h>
5
5
  #import <React/RCTLog.h>
6
+ #import <React/RCTModalHostViewController.h>
6
7
  #import <React/RCTRootContentView.h>
7
8
  #import <React/RCTRootView.h>
8
9
  #import <React/RCTUIManager.h>
@@ -15,6 +16,7 @@
15
16
  #import "RNRootViewGestureRecognizer.h"
16
17
 
17
18
  #ifdef RCT_NEW_ARCH_ENABLED
19
+ #import <React/RCTFabricModalHostViewController.h>
18
20
  #import <React/RCTSurfaceTouchHandler.h>
19
21
  #import <React/RCTSurfaceView.h>
20
22
  #import <React/RCTViewComponentView.h>
@@ -199,15 +201,26 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
199
201
  #ifdef RCT_NEW_ARCH_ENABLED
200
202
  UIView *touchHandlerView = childView;
201
203
 
202
- while (touchHandlerView != nil && ![touchHandlerView isKindOfClass:[RCTSurfaceView class]]) {
203
- touchHandlerView = touchHandlerView.superview;
204
+ if ([[childView reactViewController] isKindOfClass:[RCTFabricModalHostViewController class]]) {
205
+ touchHandlerView = [childView reactViewController].view;
206
+ } else {
207
+ while (touchHandlerView != nil && ![touchHandlerView isKindOfClass:[RCTSurfaceView class]]) {
208
+ touchHandlerView = touchHandlerView.superview;
209
+ }
204
210
  }
205
211
  #else
206
- UIView *parent = childView;
207
- while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)])
208
- parent = parent.superview;
212
+ UIView *touchHandlerView = nil;
213
+
214
+ if ([[childView reactViewController] isKindOfClass:[RCTModalHostViewController class]]) {
215
+ touchHandlerView = [childView reactViewController].view.subviews[0];
216
+ } else {
217
+ UIView *parent = childView;
218
+ while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) {
219
+ parent = parent.superview;
220
+ }
209
221
 
210
- UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
222
+ touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
223
+ }
211
224
  #endif // RCT_NEW_ARCH_ENABLED
212
225
 
213
226
  if (touchHandlerView == nil) {
@@ -247,20 +260,19 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
247
260
  if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]])
248
261
  return;
249
262
 
250
- #ifdef RCT_NEW_ARCH_ENABLED
251
263
  UIGestureRecognizer *touchHandler = nil;
252
264
 
253
- // touchHandler (RCTSurfaceTouchHandler) is private in RCTFabricSurface so we have to do
254
- // this little trick to get access to it
265
+ // this way we can extract the touch handler on both architectures relatively easily
255
266
  for (UIGestureRecognizer *recognizer in [viewWithTouchHandler gestureRecognizers]) {
267
+ #ifdef RCT_NEW_ARCH_ENABLED
256
268
  if ([recognizer isKindOfClass:[RCTSurfaceTouchHandler class]]) {
269
+ #else
270
+ if ([recognizer isKindOfClass:[RCTTouchHandler class]]) {
271
+ #endif // RCT_NEW_ARCH_ENABLED
257
272
  touchHandler = recognizer;
258
273
  break;
259
274
  }
260
275
  }
261
- #else
262
- RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
263
- #endif // RCT_NEW_ARCH_ENABLED
264
276
  [touchHandler setEnabled:NO];
265
277
  [touchHandler setEnabled:YES];
266
278
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.10.2",
3
+ "version": "2.11.0",
4
4
  "description": "Experimental implementation of a new declarative API for gesture handling in react-native",
5
5
  "scripts": {
6
6
  "prepare": "bob build && husky install",