react-native-gesture-handler 2.14.1 → 2.15.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -0
- package/RNGestureHandler.podspec +2 -2
- package/android/paper/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +55 -0
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +64 -4
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +12 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +53 -19
- package/{ios → apple}/Handlers/RNFlingHandler.m +25 -5
- package/{ios → apple}/Handlers/RNForceTouchHandler.m +25 -7
- package/{ios → apple}/Handlers/RNHoverHandler.m +26 -1
- package/{ios → apple}/Handlers/RNLongPressHandler.m +24 -4
- package/{ios → apple}/Handlers/RNManualHandler.m +24 -4
- package/{ios → apple}/Handlers/RNNativeViewHandler.mm +42 -6
- package/{ios → apple}/Handlers/RNPanHandler.m +100 -15
- package/apple/Handlers/RNPinchHandler.m +162 -0
- package/{ios → apple}/Handlers/RNRotationHandler.m +71 -9
- package/{ios → apple}/Handlers/RNTapHandler.m +96 -26
- package/apple/RNGHUIKit.h +27 -0
- package/{ios → apple}/RNGestureHandler.h +3 -3
- package/{ios → apple}/RNGestureHandler.m +31 -5
- package/{ios → apple}/RNGestureHandlerButton.h +4 -1
- package/{ios → apple}/RNGestureHandlerButton.m +12 -4
- package/{ios → apple}/RNGestureHandlerButtonManager.m +4 -2
- package/{ios → apple}/RNGestureHandlerEvents.h +1 -1
- package/{ios → apple}/RNGestureHandlerManager.h +2 -2
- package/{ios → apple}/RNGestureHandlerManager.mm +46 -11
- package/apple/RNGestureHandlerModule.h +17 -0
- package/{ios → apple}/RNGestureHandlerModule.mm +46 -60
- package/{ios → apple}/RNGestureHandlerPointerTracker.h +5 -5
- package/{ios → apple}/RNGestureHandlerPointerTracker.m +19 -14
- package/{ios → apple}/RNGestureHandlerRegistry.h +1 -1
- package/{ios → apple}/RNGestureHandlerRegistry.m +1 -1
- package/{ios → apple}/RNManualActivationRecognizer.h +8 -0
- package/{ios → apple}/RNManualActivationRecognizer.m +27 -7
- package/{ios → apple}/RNRootViewGestureRecognizer.m +72 -4
- package/lib/commonjs/RNGestureHandlerModule.js +5 -18
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +10 -102
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +2 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +11 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +5 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +13 -0
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +13 -1
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +8 -6
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +12 -14
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +35 -0
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js +3 -2
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +11 -3
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +0 -1
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +4 -18
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +10 -81
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +2 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +11 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +5 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/specs/NativeRNGestureHandlerModule.js +3 -0
- package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js +4 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +14 -2
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +8 -5
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +4 -0
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +4 -0
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +9 -11
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +34 -0
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js +3 -2
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +12 -4
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +1 -2
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +2 -13
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +5 -21
- package/lib/typescript/components/DrawerLayout.d.ts +11 -0
- 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 +4 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +2 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +14 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +9 -9
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +2 -0
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +7 -0
- package/lib/typescript/web/tools/PointerEventManager.d.ts +2 -0
- package/package.json +14 -11
- package/src/RNGestureHandlerModule.ts +4 -49
- package/src/RNGestureHandlerModule.windows.ts +18 -100
- package/src/components/DrawerLayout.tsx +15 -0
- package/src/handlers/gestureHandlerCommon.ts +5 -0
- package/src/handlers/gestures/GestureDetector.tsx +16 -2
- package/src/handlers/gestures/gesture.ts +6 -0
- package/src/index.ts +1 -0
- package/src/specs/NativeRNGestureHandlerModule.ts +26 -0
- package/src/web/handlers/FlingGestureHandler.ts +4 -0
- package/src/web/handlers/GestureHandler.ts +17 -0
- package/src/web/handlers/LongPressGestureHandler.ts +8 -5
- package/src/web/handlers/PanGestureHandler.ts +4 -0
- package/src/web/handlers/TapGestureHandler.ts +4 -0
- package/src/web/interfaces.ts +10 -10
- package/src/web/tools/GestureHandlerDelegate.ts +3 -0
- package/src/web/tools/GestureHandlerWebDelegate.ts +39 -0
- package/src/web/tools/NodeManager.ts +5 -1
- package/src/web/tools/PointerEventManager.ts +18 -2
- package/src/web/tools/TouchEventManager.ts +0 -2
- package/ios/Handlers/RNPinchHandler.m +0 -95
- package/ios/RNGestureHandlerModule.h +0 -7
- package/lib/commonjs/RNGestureHandlerModule.macos.js +0 -149
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +0 -1
- package/lib/module/RNGestureHandlerModule.macos.js +0 -110
- package/lib/module/RNGestureHandlerModule.macos.js.map +0 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +0 -47
- package/src/RNGestureHandlerModule.macos.ts +0 -133
- /package/{ios → apple}/Handlers/RNFlingHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNForceTouchHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNHoverHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNLongPressHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNManualHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNNativeViewHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNPanHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNPinchHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNRotationHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNTapHandler.h +0 -0
- /package/{ios → apple}/RNGHTouchEventType.h +0 -0
- /package/{ios → apple}/RNGestureHandler.xcodeproj/project.pbxproj +0 -0
- /package/{ios → apple}/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- /package/{ios → apple}/RNGestureHandlerActionType.h +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonComponentView.h +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonComponentView.mm +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonManager.h +0 -0
- /package/{ios → apple}/RNGestureHandlerDirection.h +0 -0
- /package/{ios → apple}/RNGestureHandlerEvents.m +0 -0
- /package/{ios → apple}/RNGestureHandlerRootViewComponentView.mm +0 -0
- /package/{ios → apple}/RNGestureHandlerState.h +0 -0
- /package/{ios → apple}/RNGestureHandlerStateManager.h +0 -0
- /package/{ios → apple}/RNRootViewGestureRecognizer.h +0 -0
@@ -9,8 +9,12 @@
|
|
9
9
|
#import "RNRotationHandler.h"
|
10
10
|
|
11
11
|
#if !TARGET_OS_TV
|
12
|
-
@interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
|
13
12
|
|
13
|
+
#if TARGET_OS_OSX
|
14
|
+
@interface RNBetterRotationRecognizer : NSRotationGestureRecognizer
|
15
|
+
#else
|
16
|
+
@interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
|
17
|
+
#endif
|
14
18
|
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
15
19
|
|
16
20
|
@end
|
@@ -35,34 +39,81 @@
|
|
35
39
|
[_gestureHandler handleGesture:recognizer];
|
36
40
|
}
|
37
41
|
|
38
|
-
- (void)
|
42
|
+
- (void)interactionsBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
39
43
|
{
|
40
|
-
[super touchesBegan:touches withEvent:event];
|
41
44
|
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
42
45
|
}
|
43
46
|
|
44
|
-
- (void)
|
47
|
+
- (void)interactionsMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
45
48
|
{
|
46
|
-
[super touchesMoved:touches withEvent:event];
|
47
49
|
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
48
50
|
}
|
49
51
|
|
50
|
-
- (void)
|
52
|
+
- (void)interactionsEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
51
53
|
{
|
52
|
-
[super touchesEnded:touches withEvent:event];
|
53
54
|
[_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
|
54
55
|
}
|
55
56
|
|
56
|
-
- (void)
|
57
|
+
- (void)interactionsCancelled:(NSSet *)touches withEvent:(UIEvent *)event
|
57
58
|
{
|
58
|
-
[super touchesCancelled:touches withEvent:event];
|
59
59
|
[_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
|
60
60
|
}
|
61
61
|
|
62
|
+
#if TARGET_OS_OSX
|
63
|
+
- (void)touchesBeganWithEvent:(NSEvent *)event
|
64
|
+
{
|
65
|
+
[super touchesBeganWithEvent:event];
|
66
|
+
[self interactionsBegan:[NSSet setWithObject:event] withEvent:event];
|
67
|
+
}
|
68
|
+
|
69
|
+
- (void)touchesMovedWithEvent:(NSEvent *)event
|
70
|
+
{
|
71
|
+
[super touchesMovedWithEvent:event];
|
72
|
+
[self interactionsMoved:[NSSet setWithObject:event] withEvent:event];
|
73
|
+
}
|
74
|
+
|
75
|
+
- (void)touchesEndedWithEvent:(NSEvent *)event
|
76
|
+
{
|
77
|
+
[super touchesEndedWithEvent:event];
|
78
|
+
[self interactionsEnded:[NSSet setWithObject:event] withEvent:event];
|
79
|
+
}
|
80
|
+
|
81
|
+
- (void)touchesCancelledWithEvent:(NSEvent *)event
|
82
|
+
{
|
83
|
+
[super touchesCancelledWithEvent:event];
|
84
|
+
[self interactionsCancelled:[NSSet setWithObject:event] withEvent:event];
|
85
|
+
}
|
86
|
+
#else
|
87
|
+
- (void)touchesBegan:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
88
|
+
{
|
89
|
+
[super touchesBegan:touches withEvent:event];
|
90
|
+
[self interactionsBegan:[NSSet setWithObject:event] withEvent:event];
|
91
|
+
}
|
92
|
+
|
93
|
+
- (void)touchesMoved:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
94
|
+
{
|
95
|
+
[super touchesMoved:touches withEvent:event];
|
96
|
+
[self interactionsMoved:[NSSet setWithObject:event] withEvent:event];
|
97
|
+
}
|
98
|
+
|
99
|
+
- (void)touchesEnded:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
100
|
+
{
|
101
|
+
[super touchesEnded:touches withEvent:event];
|
102
|
+
[self interactionsEnded:[NSSet setWithObject:event] withEvent:event];
|
103
|
+
}
|
104
|
+
|
105
|
+
- (void)touchesCancelled:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
106
|
+
{
|
107
|
+
[super touchesCancelled:touches withEvent:event];
|
108
|
+
[self interactionsCancelled:[NSSet setWithObject:event] withEvent:event];
|
109
|
+
}
|
110
|
+
#endif
|
111
|
+
|
62
112
|
- (void)reset
|
63
113
|
{
|
64
114
|
[_gestureHandler.pointerTracker reset];
|
65
115
|
[super reset];
|
116
|
+
[_gestureHandler reset];
|
66
117
|
}
|
67
118
|
|
68
119
|
@end
|
@@ -81,6 +132,16 @@
|
|
81
132
|
}
|
82
133
|
|
83
134
|
#if !TARGET_OS_TV
|
135
|
+
|
136
|
+
#if TARGET_OS_OSX
|
137
|
+
- (RNGestureHandlerEventExtraData *)eventExtraData:(NSRotationGestureRecognizer *)recognizer
|
138
|
+
{
|
139
|
+
return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
|
140
|
+
withAnchorPoint:[recognizer locationInView:recognizer.view]
|
141
|
+
withVelocity:1
|
142
|
+
withNumberOfTouches:2];
|
143
|
+
}
|
144
|
+
#else
|
84
145
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
|
85
146
|
{
|
86
147
|
return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
|
@@ -89,5 +150,6 @@
|
|
89
150
|
withNumberOfTouches:recognizer.numberOfTouches];
|
90
151
|
}
|
91
152
|
#endif
|
153
|
+
#endif // !TARGET_OS_TV
|
92
154
|
|
93
155
|
@end
|
@@ -8,7 +8,9 @@
|
|
8
8
|
|
9
9
|
#import "RNTapHandler.h"
|
10
10
|
|
11
|
+
#if !TARGET_OS_OSX
|
11
12
|
#import <UIKit/UIGestureRecognizerSubclass.h>
|
13
|
+
#endif
|
12
14
|
|
13
15
|
#import <React/RCTConvert.h>
|
14
16
|
|
@@ -69,9 +71,8 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
69
71
|
self.enabled = NO;
|
70
72
|
}
|
71
73
|
|
72
|
-
- (void)
|
74
|
+
- (void)interactionsBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
73
75
|
{
|
74
|
-
[super touchesBegan:touches withEvent:event];
|
75
76
|
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
76
77
|
|
77
78
|
if (_tapsSoFar == 0) {
|
@@ -79,7 +80,11 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
79
80
|
// is called (it resets the gesture handler), making it send whatever the last known state as oldState
|
80
81
|
// in the event. If we reset it here it correctly sends UNDETERMINED as oldState.
|
81
82
|
[_gestureHandler reset];
|
83
|
+
#if TARGET_OS_OSX
|
84
|
+
_initPosition = [self locationInView:self.view.window.contentView];
|
85
|
+
#else
|
82
86
|
_initPosition = [self locationInView:self.view.window];
|
87
|
+
#endif
|
83
88
|
}
|
84
89
|
_tapsSoFar++;
|
85
90
|
if (_tapsSoFar) {
|
@@ -96,9 +101,8 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
96
101
|
[self triggerAction];
|
97
102
|
}
|
98
103
|
|
99
|
-
- (void)
|
104
|
+
- (void)interactionsMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
100
105
|
{
|
101
|
-
[super touchesMoved:touches withEvent:event];
|
102
106
|
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
103
107
|
|
104
108
|
NSInteger numberOfTouches = [touches count];
|
@@ -121,9 +125,96 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
121
125
|
[self triggerAction];
|
122
126
|
}
|
123
127
|
|
128
|
+
- (void)interactionsEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
129
|
+
{
|
130
|
+
[_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
|
131
|
+
|
132
|
+
if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) {
|
133
|
+
self.state = UIGestureRecognizerStateEnded;
|
134
|
+
[self reset];
|
135
|
+
} else {
|
136
|
+
[self performSelector:@selector(cancel) withObject:nil afterDelay:_maxDelay];
|
137
|
+
}
|
138
|
+
}
|
139
|
+
|
140
|
+
- (void)interactionsCancelled:(NSSet *)touches withEvent:(UIEvent *)event
|
141
|
+
{
|
142
|
+
[_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
|
143
|
+
self.state = UIGestureRecognizerStateCancelled;
|
144
|
+
[self reset];
|
145
|
+
}
|
146
|
+
|
147
|
+
#if TARGET_OS_OSX
|
148
|
+
- (void)mouseDown:(NSEvent *)event
|
149
|
+
{
|
150
|
+
[super mouseDown:event];
|
151
|
+
[self interactionsBegan:[NSSet setWithObject:event] withEvent:event];
|
152
|
+
}
|
153
|
+
|
154
|
+
- (void)rightMouseDown:(NSEvent *)event
|
155
|
+
{
|
156
|
+
[super rightMouseDown:event];
|
157
|
+
[self interactionsBegan:[NSSet setWithObject:event] withEvent:event];
|
158
|
+
}
|
159
|
+
|
160
|
+
- (void)mouseDragged:(NSEvent *)event
|
161
|
+
{
|
162
|
+
[super mouseDragged:event];
|
163
|
+
[self interactionsMoved:[NSSet setWithObject:event] withEvent:event];
|
164
|
+
}
|
165
|
+
|
166
|
+
- (void)rightMouseDragged:(NSEvent *)event
|
167
|
+
{
|
168
|
+
[super rightMouseDragged:event];
|
169
|
+
[self interactionsMoved:[NSSet setWithObject:event] withEvent:event];
|
170
|
+
}
|
171
|
+
|
172
|
+
- (void)mouseUp:(NSEvent *)event
|
173
|
+
{
|
174
|
+
[super mouseUp:event];
|
175
|
+
[self interactionsEnded:[NSSet setWithObject:event] withEvent:event];
|
176
|
+
}
|
177
|
+
|
178
|
+
- (void)rightMouseUp:(NSEvent *)event
|
179
|
+
{
|
180
|
+
[super rightMouseUp:event];
|
181
|
+
[self interactionsEnded:[NSSet setWithObject:event] withEvent:event];
|
182
|
+
}
|
183
|
+
#else
|
184
|
+
|
185
|
+
- (void)touchesBegan:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
186
|
+
{
|
187
|
+
[super touchesBegan:touches withEvent:event];
|
188
|
+
[self interactionsBegan:[NSSet setWithObject:event] withEvent:event];
|
189
|
+
}
|
190
|
+
|
191
|
+
- (void)touchesMoved:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
192
|
+
{
|
193
|
+
[super touchesMoved:touches withEvent:event];
|
194
|
+
[self interactionsMoved:[NSSet setWithObject:event] withEvent:event];
|
195
|
+
}
|
196
|
+
|
197
|
+
- (void)touchesEnded:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
198
|
+
{
|
199
|
+
[super touchesEnded:touches withEvent:event];
|
200
|
+
[self interactionsEnded:[NSSet setWithObject:event] withEvent:event];
|
201
|
+
}
|
202
|
+
|
203
|
+
- (void)touchesCancelled:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
204
|
+
{
|
205
|
+
[super touchesCancelled:touches withEvent:event];
|
206
|
+
[self interactionsCancelled:[NSSet setWithObject:event] withEvent:event];
|
207
|
+
}
|
208
|
+
|
209
|
+
#endif
|
210
|
+
|
124
211
|
- (CGPoint)translationInView
|
125
212
|
{
|
213
|
+
#if TARGET_OS_OSX
|
214
|
+
CGPoint currentPosition = [self locationInView:self.view.window.contentView];
|
215
|
+
#else
|
126
216
|
CGPoint currentPosition = [self locationInView:self.view.window];
|
217
|
+
#endif
|
127
218
|
return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y);
|
128
219
|
}
|
129
220
|
|
@@ -148,28 +239,6 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
148
239
|
return NO;
|
149
240
|
}
|
150
241
|
|
151
|
-
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
152
|
-
{
|
153
|
-
[super touchesEnded:touches withEvent:event];
|
154
|
-
[_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
|
155
|
-
|
156
|
-
if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) {
|
157
|
-
self.state = UIGestureRecognizerStateEnded;
|
158
|
-
[self reset];
|
159
|
-
} else {
|
160
|
-
[self performSelector:@selector(cancel) withObject:nil afterDelay:_maxDelay];
|
161
|
-
}
|
162
|
-
}
|
163
|
-
|
164
|
-
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
165
|
-
{
|
166
|
-
[super touchesCancelled:touches withEvent:event];
|
167
|
-
[_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
|
168
|
-
|
169
|
-
self.state = UIGestureRecognizerStateCancelled;
|
170
|
-
[self reset];
|
171
|
-
}
|
172
|
-
|
173
242
|
- (void)reset
|
174
243
|
{
|
175
244
|
if (self.state == UIGestureRecognizerStateFailed) {
|
@@ -182,6 +251,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
182
251
|
_maxNumberOfTouches = 0;
|
183
252
|
self.enabled = YES;
|
184
253
|
[super reset];
|
254
|
+
[_gestureHandler reset];
|
185
255
|
}
|
186
256
|
|
187
257
|
@end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#if !TARGET_OS_OSX
|
2
|
+
|
3
|
+
#import <UIKit/UIKit.h>
|
4
|
+
|
5
|
+
typedef UIView RNGHUIView;
|
6
|
+
typedef UITouch RNGHUITouch;
|
7
|
+
|
8
|
+
#define RNGHGestureRecognizerStateFailed UIGestureRecognizerStateFailed;
|
9
|
+
#define RNGHGestureRecognizerStatePossible UIGestureRecognizerStatePossible;
|
10
|
+
#define RNGHGestureRecognizerStateCancelled UIGestureRecognizerStateCancelled;
|
11
|
+
#define RNGHGestureRecognizerStateBegan UIGestureRecognizerStateBegan;
|
12
|
+
#define RNGHGestureRecognizerStateEnded UIGestureRecognizerStateEnded;
|
13
|
+
|
14
|
+
#else // TARGET_OS_OSX [
|
15
|
+
|
16
|
+
#import <React/RCTUIKit.h>
|
17
|
+
|
18
|
+
typedef RCTUIView RNGHUIView;
|
19
|
+
typedef RCTUITouch RNGHUITouch;
|
20
|
+
|
21
|
+
#define RNGHGestureRecognizerStateFailed NSGestureRecognizerStateFailed;
|
22
|
+
#define RNGHGestureRecognizerStatePossible NSGestureRecognizerStatePossible;
|
23
|
+
#define RNGHGestureRecognizerStateCancelled NSGestureRecognizerStateCancelled;
|
24
|
+
#define RNGHGestureRecognizerStateBegan NSGestureRecognizerStateBegan;
|
25
|
+
#define RNGHGestureRecognizerStateEnded NSGestureRecognizerStateEnded;
|
26
|
+
|
27
|
+
#endif // ] TARGET_OS_OSX
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#import "RNGHUIKit.h"
|
1
2
|
#import "RNGestureHandlerActionType.h"
|
2
3
|
#import "RNGestureHandlerDirection.h"
|
3
4
|
#import "RNGestureHandlerEvents.h"
|
@@ -6,7 +7,6 @@
|
|
6
7
|
|
7
8
|
#import <Foundation/Foundation.h>
|
8
9
|
#import <React/RCTConvert.h>
|
9
|
-
#import <UIKit/UIKit.h>
|
10
10
|
|
11
11
|
#define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y)
|
12
12
|
#define TEST_MIN_IF_NOT_NAN(value, limit) \
|
@@ -44,7 +44,7 @@
|
|
44
44
|
@protocol RNRootViewGestureRecognizerDelegate <UIGestureRecognizerDelegate>
|
45
45
|
|
46
46
|
- (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer
|
47
|
-
didActivateInViewWithTouchHandler:(nullable
|
47
|
+
didActivateInViewWithTouchHandler:(nullable RNGHUIView *)viewWithTouchHandler;
|
48
48
|
|
49
49
|
@end
|
50
50
|
|
@@ -69,7 +69,7 @@
|
|
69
69
|
@property (nonatomic) BOOL needsPointerData;
|
70
70
|
@property (nonatomic) BOOL manualActivation;
|
71
71
|
|
72
|
-
- (void)bindToView:(nonnull
|
72
|
+
- (void)bindToView:(nonnull RNGHUIView *)view;
|
73
73
|
- (void)unbindFromView;
|
74
74
|
- (void)resetConfig NS_REQUIRES_SUPER;
|
75
75
|
- (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER;
|
@@ -3,7 +3,9 @@
|
|
3
3
|
|
4
4
|
#import "Handlers/RNNativeViewHandler.h"
|
5
5
|
|
6
|
+
#if !TARGET_OS_OSX
|
6
7
|
#import <UIKit/UIGestureRecognizerSubclass.h>
|
8
|
+
#endif
|
7
9
|
|
8
10
|
#import <React/UIView+React.h>
|
9
11
|
|
@@ -102,8 +104,9 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
102
104
|
_handlersThatShouldWait = nil;
|
103
105
|
_hitSlop = RNGHHitSlopEmpty;
|
104
106
|
_needsPointerData = NO;
|
105
|
-
|
107
|
+
#if !TARGET_OS_OSX
|
106
108
|
_recognizer.cancelsTouchesInView = YES;
|
109
|
+
#endif
|
107
110
|
}
|
108
111
|
|
109
112
|
- (void)configure:(NSDictionary *)config
|
@@ -123,10 +126,12 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
123
126
|
_shouldCancelWhenOutside = [RCTConvert BOOL:prop];
|
124
127
|
}
|
125
128
|
|
129
|
+
#if !TARGET_OS_OSX
|
126
130
|
prop = config[@"cancelsTouchesInView"];
|
127
131
|
if (prop != nil) {
|
128
132
|
_recognizer.cancelsTouchesInView = [RCTConvert BOOL:prop];
|
129
133
|
}
|
134
|
+
#endif
|
130
135
|
|
131
136
|
prop = config[@"needsPointerData"];
|
132
137
|
if (prop != nil) {
|
@@ -171,9 +176,11 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
171
176
|
self.recognizer.enabled = enabled;
|
172
177
|
}
|
173
178
|
|
174
|
-
- (void)bindToView:(
|
179
|
+
- (void)bindToView:(RNGHUIView *)view
|
175
180
|
{
|
181
|
+
#if !TARGET_OS_OSX
|
176
182
|
view.userInteractionEnabled = YES;
|
183
|
+
#endif
|
177
184
|
self.recognizer.delegate = self;
|
178
185
|
[view addGestureRecognizer:self.recognizer];
|
179
186
|
|
@@ -190,9 +197,15 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
190
197
|
|
191
198
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
192
199
|
{
|
200
|
+
#if TARGET_OS_OSX
|
201
|
+
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:recognizer.view]
|
202
|
+
withAbsolutePosition:[recognizer locationInView:recognizer.view.window.contentView]
|
203
|
+
withNumberOfTouches:1];
|
204
|
+
#else
|
193
205
|
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:recognizer.view]
|
194
206
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
195
207
|
withNumberOfTouches:recognizer.numberOfTouches];
|
208
|
+
#endif
|
196
209
|
}
|
197
210
|
|
198
211
|
- (void)handleGesture:(UIGestureRecognizer *)recognizer
|
@@ -227,6 +240,15 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
227
240
|
return;
|
228
241
|
}
|
229
242
|
|
243
|
+
// Recognizers don't respect manually changing their state (that happens when we are activating handler
|
244
|
+
// under custom conditions). If we send a custom event in state ACTIVE and the recognizer will later update its
|
245
|
+
// state, we will end up sending ACTIVE->BEGAN and BEGAN->ACTIVE chain. To prevent this, we simply detect the first
|
246
|
+
// weird state change and stop it (then we don't update _lastState), so the second call ends up without state change
|
247
|
+
// and is fine.
|
248
|
+
if (state == RNGestureHandlerStateBegan && _lastState == RNGestureHandlerStateActive) {
|
249
|
+
return;
|
250
|
+
}
|
251
|
+
|
230
252
|
if (state == RNGestureHandlerStateActive) {
|
231
253
|
// Generate a unique coalescing-key each time the gesture-handler becomes active. All events will have
|
232
254
|
// the same coalescing-key allowing RCTEventDispatcher to coalesce RNGestureHandlerEvents when events are
|
@@ -332,7 +354,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
332
354
|
}
|
333
355
|
}
|
334
356
|
|
335
|
-
- (void)bindManualActivationToView:(
|
357
|
+
- (void)bindManualActivationToView:(RNGHUIView *)view
|
336
358
|
{
|
337
359
|
if (_manualActivationRecognizer != nil) {
|
338
360
|
[view addGestureRecognizer:_manualActivationRecognizer];
|
@@ -357,7 +379,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
357
379
|
|
358
380
|
// We may try to extract "DummyGestureHandler" in case when "otherGestureRecognizer" belongs to
|
359
381
|
// a native view being wrapped with "NativeViewGestureHandler"
|
360
|
-
|
382
|
+
RNGHUIView *reactView = recognizer.view;
|
361
383
|
while (reactView != nil && reactView.reactTag == nil) {
|
362
384
|
reactView = reactView.superview;
|
363
385
|
}
|
@@ -475,7 +497,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
475
497
|
return YES;
|
476
498
|
}
|
477
499
|
|
478
|
-
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(
|
500
|
+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(RNGHUITouch *)touch
|
479
501
|
{
|
480
502
|
// If hitSlop is set we use it to determine if a given gesture recognizer should start processing
|
481
503
|
// touch stream. This only works for negative values of hitSlop as this method won't be triggered
|
@@ -483,7 +505,11 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
483
505
|
// values of hitSlop one should set hitSlop for the underlying view. This limitation is due to the
|
484
506
|
// fact that hitTest method is only available at the level of UIView
|
485
507
|
if (RNGH_HIT_SLOP_IS_SET(_hitSlop)) {
|
508
|
+
#if TARGET_OS_OSX
|
509
|
+
CGPoint location = [gestureRecognizer.view convertPoint:touch.locationInWindow fromView:nil];
|
510
|
+
#else
|
486
511
|
CGPoint location = [touch locationInView:gestureRecognizer.view];
|
512
|
+
#endif
|
487
513
|
CGRect hitFrame = RNGHHitSlopInsetRect(gestureRecognizer.view.bounds, _hitSlop);
|
488
514
|
return CGRectContainsPoint(hitFrame, location);
|
489
515
|
}
|
@@ -8,7 +8,9 @@
|
|
8
8
|
|
9
9
|
#import "RNGestureHandlerButton.h"
|
10
10
|
|
11
|
+
#if !TARGET_OS_OSX
|
11
12
|
#import <UIKit/UIKit.h>
|
13
|
+
#endif
|
12
14
|
|
13
15
|
/**
|
14
16
|
* Gesture Handler Button components overrides standard mechanism used by RN
|
@@ -39,23 +41,28 @@
|
|
39
41
|
if (self) {
|
40
42
|
_hitTestEdgeInsets = UIEdgeInsetsZero;
|
41
43
|
_userEnabled = YES;
|
42
|
-
#if !TARGET_OS_TV
|
44
|
+
#if !TARGET_OS_TV && !TARGET_OS_OSX
|
43
45
|
[self setExclusiveTouch:YES];
|
44
46
|
#endif
|
45
47
|
}
|
46
48
|
return self;
|
47
49
|
}
|
48
50
|
|
49
|
-
- (BOOL)shouldHandleTouch:(
|
51
|
+
- (BOOL)shouldHandleTouch:(RNGHUIView *)view
|
50
52
|
{
|
51
53
|
if ([view isKindOfClass:[RNGestureHandlerButton class]]) {
|
52
54
|
RNGestureHandlerButton *button = (RNGestureHandlerButton *)view;
|
53
55
|
return button.userEnabled;
|
54
56
|
}
|
55
57
|
|
58
|
+
#if !TARGET_OS_OSX
|
56
59
|
return [view isKindOfClass:[UIControl class]] || [view.gestureRecognizers count] > 0;
|
60
|
+
#else
|
61
|
+
return [view isKindOfClass:[NSControl class]] || [view.gestureRecognizers count] > 0;
|
62
|
+
#endif
|
57
63
|
}
|
58
64
|
|
65
|
+
#if !TARGET_OS_OSX
|
59
66
|
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
|
60
67
|
{
|
61
68
|
if (UIEdgeInsetsEqualToEdgeInsets(self.hitTestEdgeInsets, UIEdgeInsetsZero)) {
|
@@ -65,13 +72,14 @@
|
|
65
72
|
return CGRectContainsPoint(hitFrame, point);
|
66
73
|
}
|
67
74
|
|
68
|
-
- (
|
75
|
+
- (RNGHUIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
|
69
76
|
{
|
70
|
-
|
77
|
+
RNGHUIView *inner = [super hitTest:point withEvent:event];
|
71
78
|
while (inner && ![self shouldHandleTouch:inner]) {
|
72
79
|
inner = inner.superview;
|
73
80
|
}
|
74
81
|
return inner;
|
75
82
|
}
|
83
|
+
#endif
|
76
84
|
|
77
85
|
@end
|
@@ -9,12 +9,14 @@ RCT_CUSTOM_VIEW_PROPERTY(enabled, BOOL, RNGestureHandlerButton)
|
|
9
9
|
{
|
10
10
|
view.userEnabled = json == nil ? YES : [RCTConvert BOOL:json];
|
11
11
|
}
|
12
|
-
|
12
|
+
|
13
|
+
#if !TARGET_OS_TV && !TARGET_OS_OSX
|
13
14
|
RCT_CUSTOM_VIEW_PROPERTY(exclusive, BOOL, RNGestureHandlerButton)
|
14
15
|
{
|
15
16
|
[view setExclusiveTouch:json == nil ? YES : [RCTConvert BOOL:json]];
|
16
17
|
}
|
17
18
|
#endif
|
19
|
+
|
18
20
|
RCT_CUSTOM_VIEW_PROPERTY(hitSlop, UIEdgeInsets, RNGestureHandlerButton)
|
19
21
|
{
|
20
22
|
if (json) {
|
@@ -26,7 +28,7 @@ RCT_CUSTOM_VIEW_PROPERTY(hitSlop, UIEdgeInsets, RNGestureHandlerButton)
|
|
26
28
|
}
|
27
29
|
}
|
28
30
|
|
29
|
-
- (
|
31
|
+
- (RNGHUIView *)view
|
30
32
|
{
|
31
33
|
return [RNGestureHandlerButton new];
|
32
34
|
}
|
@@ -10,7 +10,7 @@
|
|
10
10
|
@interface RNGestureHandlerManager : NSObject
|
11
11
|
|
12
12
|
- (nonnull instancetype)initWithUIManager:(nonnull RCTUIManager *)uiManager
|
13
|
-
eventDispatcher:(nonnull
|
13
|
+
eventDispatcher:(nonnull id<RCTEventDispatcherProtocol>)eventDispatcher;
|
14
14
|
|
15
15
|
- (void)createGestureHandler:(nonnull NSString *)handlerName
|
16
16
|
tag:(nonnull NSNumber *)handlerTag
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
- (void)dropAllGestureHandlers;
|
28
28
|
|
29
|
-
- (void)handleSetJSResponder:(nonnull NSNumber *)viewTag blockNativeResponder:(
|
29
|
+
- (void)handleSetJSResponder:(nonnull NSNumber *)viewTag blockNativeResponder:(BOOL)blockNativeResponder;
|
30
30
|
|
31
31
|
- (void)handleClearJSResponder;
|
32
32
|
|