react-native-gesture-handler 2.7.1 → 2.9.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.
- package/RNGestureHandler.podspec +1 -1
- package/android/build.gradle +53 -46
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +20 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +40 -15
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
- package/android/src/main/jni/CMakeLists.txt +10 -44
- package/android/src/main/jni/cpp-adapter.cpp +16 -13
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNFlingHandler.m +39 -37
- package/ios/Handlers/RNForceTouchHandler.m +19 -17
- package/ios/Handlers/RNLongPressHandler.m +20 -22
- package/ios/Handlers/RNManualHandler.m +23 -8
- package/ios/Handlers/RNNativeViewHandler.mm +92 -88
- package/ios/Handlers/RNPanHandler.m +28 -32
- package/ios/Handlers/RNPinchHandler.m +9 -10
- package/ios/Handlers/RNRotationHandler.m +11 -14
- package/ios/Handlers/RNTapHandler.m +26 -26
- package/ios/RNGestureHandler.h +31 -24
- package/ios/RNGestureHandler.m +278 -273
- package/ios/RNGestureHandlerActionType.h +6 -4
- package/ios/RNGestureHandlerButton.m +11 -12
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerButtonManager.m +6 -5
- package/ios/RNGestureHandlerDirection.h +4 -4
- package/ios/RNGestureHandlerEvents.h +3 -4
- package/ios/RNGestureHandlerEvents.m +114 -119
- package/ios/RNGestureHandlerManager.h +1 -2
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/ios/RNGestureHandlerModule.h +1 -2
- package/ios/RNGestureHandlerModule.mm +126 -122
- package/ios/RNGestureHandlerPointerTracker.h +1 -1
- package/ios/RNGestureHandlerPointerTracker.m +40 -37
- package/ios/RNGestureHandlerRegistry.h +3 -1
- package/ios/RNGestureHandlerRegistry.m +24 -22
- package/ios/RNGestureHandlerState.h +6 -6
- package/ios/RNGestureHandlerStateManager.h +1 -1
- package/ios/RNManualActivationRecognizer.m +9 -9
- package/ios/RNRootViewGestureRecognizer.m +36 -39
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js +2 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +87 -38
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +4 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +117 -0
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/gestureHandlerRootHOC.js +2 -1
- package/lib/module/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +3 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +3 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -2
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +89 -39
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +1 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +28 -3
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -2
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +0 -5
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -2
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +4 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +25 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
- package/lib/typescript/components/DrawerLayout.d.ts +10 -1
- package/lib/typescript/components/Swipeable.d.ts +3 -2
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
- package/lib/typescript/gestureHandlerRootHOC.d.ts +1 -1
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +3 -1
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/package.json +17 -14
- package/src/RNGestureHandlerModule.macos.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/RNGestureHandlerModule.windows.ts +140 -0
- package/src/components/DrawerLayout.tsx +22 -12
- package/src/components/Swipeable.tsx +16 -13
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/gestureHandlerRootHOC.tsx +4 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- package/src/handlers/createHandler.tsx +13 -15
- package/src/handlers/gestureHandlerCommon.ts +9 -4
- package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
- package/src/handlers/gestures/GestureDetector.tsx +117 -44
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/handlers/gestures/longPressGesture.ts +1 -0
- package/src/handlers/gestures/tapGesture.ts +1 -0
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +2 -3
- package/src/web/handlers/GestureHandler.ts +30 -11
- package/src/web/handlers/LongPressGestureHandler.ts +0 -3
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
- package/src/web/handlers/PanGestureHandler.ts +0 -6
- package/src/web/handlers/PinchGestureHandler.ts +0 -2
- package/src/web/handlers/RotationGestureHandler.ts +2 -5
- package/src/web/handlers/TapGestureHandler.ts +0 -3
- package/src/web/interfaces.ts +3 -0
- package/src/web/tools/InteractionManager.ts +2 -3
- package/src/web_hammer/GestureHandler.ts +6 -8
- package/src/web_hammer/NodeManager.ts +3 -1
- package/src/web_hammer/PanGestureHandler.ts +12 -6
- package/android/lib/build.gradle +0 -28
|
@@ -27,37 +27,37 @@
|
|
|
27
27
|
|
|
28
28
|
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
|
|
29
29
|
{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
|
|
31
|
+
_gestureHandler = gestureHandler;
|
|
32
|
+
}
|
|
33
|
+
return self;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
37
37
|
{
|
|
38
|
-
|
|
38
|
+
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
42
42
|
{
|
|
43
|
-
|
|
43
|
+
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
47
47
|
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
[_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
|
|
49
|
+
self.state = UIGestureRecognizerStateFailed;
|
|
50
|
+
[self reset];
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
54
54
|
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
[_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
|
|
56
|
+
self.state = UIGestureRecognizerStateCancelled;
|
|
57
|
+
[self reset];
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
-(void)reset
|
|
60
|
+
- (void)reset
|
|
61
61
|
{
|
|
62
62
|
[_gestureHandler.pointerTracker reset];
|
|
63
63
|
[super reset];
|
|
@@ -68,122 +68,126 @@
|
|
|
68
68
|
#pragma mark RNNativeViewgestureHandler
|
|
69
69
|
|
|
70
70
|
@implementation RNNativeViewGestureHandler {
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
BOOL _shouldActivateOnStart;
|
|
72
|
+
BOOL _disallowInterruption;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
76
76
|
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
if ((self = [super initWithTag:tag])) {
|
|
78
|
+
_recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
|
|
79
|
+
}
|
|
80
|
+
return self;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
- (void)configure:(NSDictionary *)config
|
|
84
84
|
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
[super configure:config];
|
|
86
|
+
_shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
|
|
87
|
+
_disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
- (void)bindToView:(UIView *)view
|
|
91
91
|
{
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
92
|
+
// For UIControl based views (UIButton, UISwitch) we provide special handling that would allow
|
|
93
|
+
// for properties like `disallowInterruption` to work.
|
|
94
|
+
if ([view isKindOfClass:[UIControl class]]) {
|
|
95
|
+
UIControl *control = (UIControl *)view;
|
|
96
|
+
[control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
|
|
97
|
+
[control addTarget:self
|
|
98
|
+
action:@selector(handleTouchUpOutside:forEvent:)
|
|
99
|
+
forControlEvents:UIControlEventTouchUpOutside];
|
|
100
|
+
[control addTarget:self
|
|
101
|
+
action:@selector(handleTouchUpInside:forEvent:)
|
|
102
|
+
forControlEvents:UIControlEventTouchUpInside];
|
|
103
|
+
[control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
|
|
104
|
+
[control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter];
|
|
105
|
+
[control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
|
|
106
|
+
} else {
|
|
107
|
+
[super bindToView:view];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// We can restore default scrollview behaviour to delay touches to scrollview's children
|
|
111
|
+
// because gesture handler system can handle cancellation of scroll recognizer when JS responder
|
|
112
|
+
// is set
|
|
109
113
|
#ifdef RN_FABRIC_ENABLED
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
|
|
115
|
+
UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
|
|
116
|
+
scrollView.delaysContentTouches = YES;
|
|
117
|
+
}
|
|
114
118
|
#else
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
if ([view isKindOfClass:[RCTScrollView class]]) {
|
|
120
|
+
// This part of the code is coupled with RN implementation of ScrollView native wrapper and
|
|
121
|
+
// we expect for RCTScrollView component to contain a subclass of UIScrollview as the only
|
|
122
|
+
// subview
|
|
123
|
+
UIScrollView *scrollView = [view.subviews objectAtIndex:0];
|
|
124
|
+
scrollView.delaysContentTouches = YES;
|
|
125
|
+
}
|
|
122
126
|
#endif // RN_FABRIC_ENABLED
|
|
123
127
|
}
|
|
124
128
|
|
|
125
129
|
- (void)handleTouchDown:(UIView *)sender forEvent:(UIEvent *)event
|
|
126
130
|
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
131
|
+
[self reset];
|
|
132
|
+
|
|
133
|
+
if (_disallowInterruption) {
|
|
134
|
+
// When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
|
|
135
|
+
// gets DOWN event
|
|
136
|
+
for (UITouch *touch in [event allTouches]) {
|
|
137
|
+
for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) {
|
|
138
|
+
recogn.enabled = NO;
|
|
139
|
+
recogn.enabled = YES;
|
|
140
|
+
}
|
|
138
141
|
}
|
|
142
|
+
}
|
|
139
143
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
[self sendEventsInState:RNGestureHandlerStateActive
|
|
145
|
+
forViewWithTag:sender.reactTag
|
|
146
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
- (void)handleTouchUpOutside:(UIView *)sender forEvent:(UIEvent *)event
|
|
146
150
|
{
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
[self sendEventsInState:RNGestureHandlerStateEnd
|
|
152
|
+
forViewWithTag:sender.reactTag
|
|
153
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
|
|
150
154
|
}
|
|
151
155
|
|
|
152
156
|
- (void)handleTouchUpInside:(UIView *)sender forEvent:(UIEvent *)event
|
|
153
157
|
{
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
[self sendEventsInState:RNGestureHandlerStateEnd
|
|
159
|
+
forViewWithTag:sender.reactTag
|
|
160
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
|
|
157
161
|
}
|
|
158
162
|
|
|
159
163
|
- (void)handleDragExit:(UIView *)sender forEvent:(UIEvent *)event
|
|
160
164
|
{
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
165
|
+
// Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set
|
|
166
|
+
if (self.shouldCancelWhenOutside) {
|
|
167
|
+
UIControl *control = (UIControl *)sender;
|
|
168
|
+
[control cancelTrackingWithEvent:event];
|
|
169
|
+
[self sendEventsInState:RNGestureHandlerStateEnd
|
|
170
|
+
forViewWithTag:sender.reactTag
|
|
171
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
|
|
172
|
+
} else {
|
|
173
|
+
[self sendEventsInState:RNGestureHandlerStateActive
|
|
174
|
+
forViewWithTag:sender.reactTag
|
|
175
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
|
|
176
|
+
}
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
- (void)handleDragEnter:(UIView *)sender forEvent:(UIEvent *)event
|
|
176
180
|
{
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
[self sendEventsInState:RNGestureHandlerStateActive
|
|
182
|
+
forViewWithTag:sender.reactTag
|
|
183
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
|
|
180
184
|
}
|
|
181
185
|
|
|
182
186
|
- (void)handleTouchCancel:(UIView *)sender forEvent:(UIEvent *)event
|
|
183
187
|
{
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
[self sendEventsInState:RNGestureHandlerStateCancelled
|
|
189
|
+
forViewWithTag:sender.reactTag
|
|
190
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
@end
|
|
@@ -26,19 +26,17 @@
|
|
|
26
26
|
@property (nonatomic) CGFloat failOffsetYEnd;
|
|
27
27
|
@property (nonatomic) CGFloat activateAfterLongPress;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
|
|
29
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
31
30
|
|
|
32
31
|
@end
|
|
33
32
|
|
|
34
|
-
|
|
35
33
|
@implementation RNBetterPanGestureRecognizer {
|
|
36
34
|
__weak RNGestureHandler *_gestureHandler;
|
|
37
35
|
NSUInteger _realMinimumNumberOfTouches;
|
|
38
36
|
BOOL _hasCustomActivationCriteria;
|
|
39
37
|
}
|
|
40
38
|
|
|
41
|
-
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
|
|
39
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
|
|
42
40
|
{
|
|
43
41
|
if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
|
|
44
42
|
_gestureHandler = gestureHandler;
|
|
@@ -96,9 +94,9 @@
|
|
|
96
94
|
}
|
|
97
95
|
#endif
|
|
98
96
|
[super touchesBegan:touches withEvent:event];
|
|
99
|
-
[self triggerAction];
|
|
100
97
|
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
|
101
|
-
|
|
98
|
+
[self triggerAction];
|
|
99
|
+
|
|
102
100
|
if (!isnan(_activateAfterLongPress)) {
|
|
103
101
|
[self performSelector:@selector(activateAfterLongPress) withObject:nil afterDelay:_activateAfterLongPress];
|
|
104
102
|
}
|
|
@@ -108,7 +106,7 @@
|
|
|
108
106
|
{
|
|
109
107
|
[super touchesMoved:touches withEvent:event];
|
|
110
108
|
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
|
111
|
-
|
|
109
|
+
|
|
112
110
|
if (self.state == UIGestureRecognizerStatePossible && [self shouldFailUnderCustomCriteria]) {
|
|
113
111
|
self.state = UIGestureRecognizerStateFailed;
|
|
114
112
|
return;
|
|
@@ -119,14 +117,14 @@
|
|
|
119
117
|
// then UIGestureRecognizer's sate machine will only transition to
|
|
120
118
|
// UIGestureRecognizerStateCancelled even if you set the state to
|
|
121
119
|
// UIGestureRecognizerStateFailed here. Making the behavior explicit.
|
|
122
|
-
self.state = (self.state == UIGestureRecognizerStatePossible)
|
|
123
|
-
|
|
124
|
-
: UIGestureRecognizerStateCancelled;
|
|
120
|
+
self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed
|
|
121
|
+
: UIGestureRecognizerStateCancelled;
|
|
125
122
|
[self reset];
|
|
126
123
|
return;
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
|
-
if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible &&
|
|
126
|
+
if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible &&
|
|
127
|
+
[self shouldActivateUnderCustomCriteria]) {
|
|
130
128
|
#if !TARGET_OS_TV
|
|
131
129
|
super.minimumNumberOfTouches = _realMinimumNumberOfTouches;
|
|
132
130
|
if ([self numberOfTouches] >= _realMinimumNumberOfTouches) {
|
|
@@ -160,10 +158,9 @@
|
|
|
160
158
|
|
|
161
159
|
- (void)updateHasCustomActivationCriteria
|
|
162
160
|
{
|
|
163
|
-
_hasCustomActivationCriteria = !isnan(_minDistSq)
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|| !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
|
|
161
|
+
_hasCustomActivationCriteria = !isnan(_minDistSq) || !isnan(_minVelocityX) || !isnan(_minVelocityY) ||
|
|
162
|
+
!isnan(_minVelocitySq) || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd) ||
|
|
163
|
+
!isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
|
|
167
164
|
}
|
|
168
165
|
|
|
169
166
|
- (BOOL)shouldFailUnderCustomCriteria
|
|
@@ -174,7 +171,7 @@
|
|
|
174
171
|
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil];
|
|
175
172
|
return YES;
|
|
176
173
|
}
|
|
177
|
-
|
|
174
|
+
|
|
178
175
|
if (!isnan(_failOffsetXStart) && trans.x < _failOffsetXStart) {
|
|
179
176
|
return YES;
|
|
180
177
|
}
|
|
@@ -205,11 +202,11 @@
|
|
|
205
202
|
if (!isnan(_activeOffsetYEnd) && trans.y > _activeOffsetYEnd) {
|
|
206
203
|
return YES;
|
|
207
204
|
}
|
|
208
|
-
|
|
205
|
+
|
|
209
206
|
if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(trans), _minDistSq)) {
|
|
210
207
|
return YES;
|
|
211
208
|
}
|
|
212
|
-
|
|
209
|
+
|
|
213
210
|
CGPoint velocity = [self velocityInView:self.view];
|
|
214
211
|
if (TEST_MIN_IF_NOT_NAN(velocity.x, _minVelocityX)) {
|
|
215
212
|
return YES;
|
|
@@ -220,7 +217,7 @@
|
|
|
220
217
|
if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), _minVelocitySq)) {
|
|
221
218
|
return YES;
|
|
222
219
|
}
|
|
223
|
-
|
|
220
|
+
|
|
224
221
|
return NO;
|
|
225
222
|
}
|
|
226
223
|
|
|
@@ -269,7 +266,7 @@
|
|
|
269
266
|
{
|
|
270
267
|
[super configure:config];
|
|
271
268
|
RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer;
|
|
272
|
-
|
|
269
|
+
|
|
273
270
|
APPLY_FLOAT_PROP(minVelocityX);
|
|
274
271
|
APPLY_FLOAT_PROP(minVelocityY);
|
|
275
272
|
APPLY_FLOAT_PROP(activeOffsetXStart);
|
|
@@ -284,7 +281,7 @@
|
|
|
284
281
|
#if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400
|
|
285
282
|
if (@available(iOS 13.4, *)) {
|
|
286
283
|
bool enableTrackpadTwoFingerGesture = [RCTConvert BOOL:config[@"enableTrackpadTwoFingerGesture"]];
|
|
287
|
-
if(enableTrackpadTwoFingerGesture){
|
|
284
|
+
if (enableTrackpadTwoFingerGesture) {
|
|
288
285
|
recognizer.allowedScrollTypesMask = UIScrollTypeMaskAll;
|
|
289
286
|
}
|
|
290
287
|
}
|
|
@@ -292,19 +289,19 @@
|
|
|
292
289
|
APPLY_NAMED_INT_PROP(minimumNumberOfTouches, @"minPointers");
|
|
293
290
|
APPLY_NAMED_INT_PROP(maximumNumberOfTouches, @"maxPointers");
|
|
294
291
|
#endif
|
|
295
|
-
|
|
292
|
+
|
|
296
293
|
id prop = config[@"minDist"];
|
|
297
294
|
if (prop != nil) {
|
|
298
295
|
CGFloat dist = [RCTConvert CGFloat:prop];
|
|
299
296
|
recognizer.minDistSq = dist * dist;
|
|
300
297
|
}
|
|
301
|
-
|
|
298
|
+
|
|
302
299
|
prop = config[@"minVelocity"];
|
|
303
300
|
if (prop != nil) {
|
|
304
301
|
CGFloat velocity = [RCTConvert CGFloat:prop];
|
|
305
302
|
recognizer.minVelocitySq = velocity * velocity;
|
|
306
303
|
}
|
|
307
|
-
|
|
304
|
+
|
|
308
305
|
prop = config[@"activateAfterLongPress"];
|
|
309
306
|
if (prop != nil) {
|
|
310
307
|
recognizer.activateAfterLongPress = [RCTConvert CGFloat:prop] / 1000.0;
|
|
@@ -313,23 +310,22 @@
|
|
|
313
310
|
[recognizer updateHasCustomActivationCriteria];
|
|
314
311
|
}
|
|
315
312
|
|
|
316
|
-
- (BOOL)
|
|
313
|
+
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
|
|
317
314
|
{
|
|
318
315
|
RNGestureHandlerState savedState = _lastState;
|
|
319
316
|
BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
|
|
320
317
|
_lastState = savedState;
|
|
321
|
-
|
|
318
|
+
|
|
322
319
|
return shouldBegin;
|
|
323
320
|
}
|
|
324
321
|
|
|
325
322
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIPanGestureRecognizer *)recognizer
|
|
326
323
|
{
|
|
327
|
-
return [RNGestureHandlerEventExtraData
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
withNumberOfTouches:recognizer.numberOfTouches];
|
|
324
|
+
return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:recognizer.view]
|
|
325
|
+
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
|
326
|
+
withTranslation:[recognizer translationInView:recognizer.view.window]
|
|
327
|
+
withVelocity:[recognizer velocityInView:recognizer.view.window]
|
|
328
|
+
withNumberOfTouches:recognizer.numberOfTouches];
|
|
333
329
|
}
|
|
334
330
|
|
|
335
331
|
@end
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#if !TARGET_OS_TV
|
|
14
14
|
@interface RNBetterPinchRecognizer : UIPinchGestureRecognizer
|
|
15
15
|
|
|
16
|
-
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
|
|
16
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
17
17
|
|
|
18
18
|
@end
|
|
19
19
|
|
|
@@ -74,22 +74,21 @@
|
|
|
74
74
|
|
|
75
75
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
76
76
|
{
|
|
77
|
-
|
|
77
|
+
if ((self = [super initWithTag:tag])) {
|
|
78
78
|
#if !TARGET_OS_TV
|
|
79
|
-
|
|
79
|
+
_recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
|
|
80
80
|
#endif
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
}
|
|
82
|
+
return self;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
#if !TARGET_OS_TV
|
|
86
86
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIPinchGestureRecognizer *)recognizer
|
|
87
87
|
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
withNumberOfTouches:recognizer.numberOfTouches];
|
|
88
|
+
return [RNGestureHandlerEventExtraData forPinch:recognizer.scale
|
|
89
|
+
withFocalPoint:[recognizer locationInView:recognizer.view]
|
|
90
|
+
withVelocity:recognizer.velocity
|
|
91
|
+
withNumberOfTouches:recognizer.numberOfTouches];
|
|
93
92
|
}
|
|
94
93
|
#endif
|
|
95
94
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#if !TARGET_OS_TV
|
|
12
12
|
@interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
|
|
13
13
|
|
|
14
|
-
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
|
|
14
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
15
15
|
|
|
16
16
|
@end
|
|
17
17
|
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
[_gestureHandler handleGesture:recognizer];
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
38
|
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
40
39
|
{
|
|
41
40
|
[super touchesBegan:touches withEvent:event];
|
|
@@ -73,24 +72,22 @@
|
|
|
73
72
|
|
|
74
73
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
75
74
|
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
if ((self = [super initWithTag:tag])) {
|
|
76
|
+
#if !TARGET_OS_TV
|
|
77
|
+
_recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
|
|
78
|
+
#endif
|
|
79
|
+
}
|
|
80
|
+
return self;
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
#if !TARGET_OS_TV
|
|
85
84
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
|
|
86
85
|
{
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
withNumberOfTouches:recognizer.numberOfTouches];
|
|
86
|
+
return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
|
|
87
|
+
withAnchorPoint:[recognizer locationInView:recognizer.view]
|
|
88
|
+
withVelocity:recognizer.velocity
|
|
89
|
+
withNumberOfTouches:recognizer.numberOfTouches];
|
|
92
90
|
}
|
|
93
91
|
#endif
|
|
94
92
|
|
|
95
93
|
@end
|
|
96
|
-
|