react-native-gesture-handler 2.7.1 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|