react-native-gesture-handler 2.14.1 → 2.15.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/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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#import "RNGestureHandlerManager.h"
|
|
2
2
|
|
|
3
3
|
#import <React/RCTComponent.h>
|
|
4
|
-
#import <React/
|
|
4
|
+
#import <React/RCTEventDispatcherProtocol.h>
|
|
5
5
|
#import <React/RCTLog.h>
|
|
6
6
|
#import <React/RCTModalHostViewController.h>
|
|
7
7
|
#import <React/RCTRootContentView.h>
|
|
@@ -52,11 +52,12 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
52
52
|
RCTUIManager *_uiManager;
|
|
53
53
|
NSHashTable<RNRootViewGestureRecognizer *> *_rootViewGestureRecognizers;
|
|
54
54
|
NSMutableDictionary<NSNumber *, NSNumber *> *_attachRetryCounter;
|
|
55
|
-
|
|
55
|
+
id<RCTEventDispatcherProtocol> _eventDispatcher;
|
|
56
56
|
id _reanimatedModule;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
- (instancetype)initWithUIManager:(RCTUIManager *)uiManager
|
|
59
|
+
- (instancetype)initWithUIManager:(RCTUIManager *)uiManager
|
|
60
|
+
eventDispatcher:(id<RCTEventDispatcherProtocol>)eventDispatcher
|
|
60
61
|
{
|
|
61
62
|
if ((self = [super init])) {
|
|
62
63
|
_uiManager = uiManager;
|
|
@@ -71,6 +72,14 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
71
72
|
|
|
72
73
|
- (void)createGestureHandler:(NSString *)handlerName tag:(NSNumber *)handlerTag config:(NSDictionary *)config
|
|
73
74
|
{
|
|
75
|
+
if ([_registry handlerWithTag:handlerTag] != nullptr) {
|
|
76
|
+
NSString *errorMessage = [NSString
|
|
77
|
+
stringWithFormat:
|
|
78
|
+
@"Handler with tag %@ already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.",
|
|
79
|
+
handlerTag];
|
|
80
|
+
@throw [NSException exceptionWithName:@"HandlerAlreadyRegistered" reason:errorMessage userInfo:nil];
|
|
81
|
+
}
|
|
82
|
+
|
|
74
83
|
static NSDictionary *map;
|
|
75
84
|
static dispatch_once_t mapToken;
|
|
76
85
|
dispatch_once(&mapToken, ^{
|
|
@@ -106,7 +115,7 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
106
115
|
toViewWithTag:(nonnull NSNumber *)viewTag
|
|
107
116
|
withActionType:(RNGestureHandlerActionType)actionType
|
|
108
117
|
{
|
|
109
|
-
|
|
118
|
+
RNGHUIView *view = [_uiManager viewForReactTag:viewTag];
|
|
110
119
|
|
|
111
120
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
112
121
|
if (view == nil || view.superview == nil) {
|
|
@@ -177,9 +186,9 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
177
186
|
[_registry dropAllHandlers];
|
|
178
187
|
}
|
|
179
188
|
|
|
180
|
-
- (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(
|
|
189
|
+
- (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(BOOL)blockNativeResponder
|
|
181
190
|
{
|
|
182
|
-
if (
|
|
191
|
+
if (blockNativeResponder) {
|
|
183
192
|
for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
|
|
184
193
|
[recognizer blockOtherRecognizers];
|
|
185
194
|
}
|
|
@@ -198,11 +207,12 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
198
207
|
|
|
199
208
|
#pragma mark Root Views Management
|
|
200
209
|
|
|
201
|
-
- (void)registerViewWithGestureRecognizerAttachedIfNeeded:(
|
|
210
|
+
- (void)registerViewWithGestureRecognizerAttachedIfNeeded:(RNGHUIView *)childView
|
|
202
211
|
{
|
|
203
212
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
204
|
-
|
|
213
|
+
RNGHUIView *touchHandlerView = childView;
|
|
205
214
|
|
|
215
|
+
#if !TARGET_OS_OSX
|
|
206
216
|
if ([[childView reactViewController] isKindOfClass:[RCTFabricModalHostViewController class]]) {
|
|
207
217
|
touchHandlerView = [childView reactViewController].view;
|
|
208
218
|
} else {
|
|
@@ -211,8 +221,15 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
211
221
|
}
|
|
212
222
|
}
|
|
213
223
|
#else
|
|
214
|
-
|
|
224
|
+
while (touchHandlerView != nil && ![touchHandlerView isKindOfClass:[RCTSurfaceView class]]) {
|
|
225
|
+
touchHandlerView = touchHandlerView.superview;
|
|
226
|
+
}
|
|
227
|
+
#endif // !TARGET_OS_OSX
|
|
215
228
|
|
|
229
|
+
#else
|
|
230
|
+
RNGHUIView *touchHandlerView = nil;
|
|
231
|
+
|
|
232
|
+
#if !TARGET_OS_OSX
|
|
216
233
|
if ([[childView reactViewController] isKindOfClass:[RCTModalHostViewController class]]) {
|
|
217
234
|
touchHandlerView = [childView reactViewController].view.subviews[0];
|
|
218
235
|
} else {
|
|
@@ -223,6 +240,15 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
223
240
|
|
|
224
241
|
touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
|
|
225
242
|
}
|
|
243
|
+
#else
|
|
244
|
+
NSView *parent = childView;
|
|
245
|
+
while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) {
|
|
246
|
+
parent = parent.superview;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
|
|
250
|
+
#endif // !TARGET_OS_OSX
|
|
251
|
+
|
|
226
252
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
227
253
|
|
|
228
254
|
if (touchHandlerView == nil) {
|
|
@@ -240,13 +266,15 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
240
266
|
RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
|
|
241
267
|
RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
|
|
242
268
|
recognizer.delegate = self;
|
|
269
|
+
#if !TARGET_OS_OSX
|
|
243
270
|
touchHandlerView.userInteractionEnabled = YES;
|
|
271
|
+
#endif
|
|
244
272
|
[touchHandlerView addGestureRecognizer:recognizer];
|
|
245
273
|
[_rootViewGestureRecognizers addObject:recognizer];
|
|
246
274
|
}
|
|
247
275
|
|
|
248
276
|
- (void)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
|
|
249
|
-
didActivateInViewWithTouchHandler:(
|
|
277
|
+
didActivateInViewWithTouchHandler:(RNGHUIView *)viewWithTouchHandler
|
|
250
278
|
{
|
|
251
279
|
// Cancel touches in RN's root view in order to cancel all in-js recognizers
|
|
252
280
|
|
|
@@ -259,8 +287,15 @@ constexpr int NEW_ARCH_NUMBER_OF_ATTACH_RETRIES = 25;
|
|
|
259
287
|
// particular if we have one PanHandler and ScrollView that can work simultaniously then when
|
|
260
288
|
// the Pan handler activates it would still tigger cancel events.
|
|
261
289
|
// Once the upstream fix lands the line below along with this comment can be removed
|
|
262
|
-
|
|
290
|
+
#if TARGET_OS_OSX
|
|
291
|
+
if ([gestureRecognizer.view isKindOfClass:[NSScrollView class]]) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
#else
|
|
295
|
+
if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]]) {
|
|
263
296
|
return;
|
|
297
|
+
}
|
|
298
|
+
#endif
|
|
264
299
|
|
|
265
300
|
UIGestureRecognizer *touchHandler = nil;
|
|
266
301
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#import <React/RCTEventEmitter.h>
|
|
2
|
+
#import <React/RCTUIManager.h>
|
|
3
|
+
|
|
4
|
+
#ifdef RN_FABRIC_ENABLED
|
|
5
|
+
#import <rngesturehandler_codegen/rngesturehandler_codegen.h>
|
|
6
|
+
#else
|
|
7
|
+
#import <React/RCTBridgeModule.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
@interface RNGestureHandlerModule : RCTEventEmitter
|
|
11
|
+
#ifdef RN_FABRIC_ENABLED
|
|
12
|
+
<NativeRNGestureHandlerModuleSpec>
|
|
13
|
+
#else
|
|
14
|
+
<RCTBridgeModule>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
@end
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
11
11
|
#import <React/RCTBridge+Private.h>
|
|
12
12
|
#import <React/RCTBridge.h>
|
|
13
|
-
#import <React/RCTSurfacePresenter.h>
|
|
14
13
|
#import <React/RCTUtils.h>
|
|
15
14
|
#import <ReactCommon/CallInvoker.h>
|
|
16
15
|
#import <ReactCommon/RCTTurboModule.h>
|
|
@@ -26,13 +25,15 @@
|
|
|
26
25
|
#import "RNGestureHandlerButton.h"
|
|
27
26
|
#import "RNGestureHandlerStateManager.h"
|
|
28
27
|
|
|
28
|
+
#import <React/RCTJSThread.h>
|
|
29
|
+
|
|
29
30
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
30
31
|
using namespace facebook;
|
|
31
32
|
using namespace react;
|
|
32
33
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
33
34
|
|
|
34
35
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
35
|
-
@interface RNGestureHandlerModule () <
|
|
36
|
+
@interface RNGestureHandlerModule () <RNGestureHandlerStateManager>
|
|
36
37
|
|
|
37
38
|
@end
|
|
38
39
|
#else
|
|
@@ -66,9 +67,7 @@ RCT_EXPORT_MODULE()
|
|
|
66
67
|
|
|
67
68
|
_manager = nil;
|
|
68
69
|
|
|
69
|
-
#
|
|
70
|
-
[self.bridge.surfacePresenter removeObserver:self];
|
|
71
|
-
#else
|
|
70
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
72
71
|
[self.bridge.uiManager.observerCoordinator removeObserver:self];
|
|
73
72
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
74
73
|
}
|
|
@@ -113,9 +112,7 @@ void decorateRuntime(jsi::Runtime &runtime)
|
|
|
113
112
|
eventDispatcher:bridge.eventDispatcher];
|
|
114
113
|
_operations = [NSMutableArray new];
|
|
115
114
|
|
|
116
|
-
#
|
|
117
|
-
[bridge.surfacePresenter addObserver:self];
|
|
118
|
-
#else
|
|
115
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
119
116
|
[bridge.uiManager.observerCoordinator addObserver:self];
|
|
120
117
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
121
118
|
}
|
|
@@ -123,55 +120,55 @@ void decorateRuntime(jsi::Runtime &runtime)
|
|
|
123
120
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
124
121
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install)
|
|
125
122
|
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
123
|
+
[self.bridge
|
|
124
|
+
dispatchBlock:^{
|
|
125
|
+
RCTCxxBridge *cxxBridge = (RCTCxxBridge *)self.bridge;
|
|
126
|
+
auto runtime = (jsi::Runtime *)cxxBridge.runtime;
|
|
127
|
+
decorateRuntime(*runtime);
|
|
128
|
+
}
|
|
129
|
+
queue:RCTJSThread];
|
|
130
|
+
|
|
129
131
|
return @true;
|
|
130
132
|
}
|
|
131
133
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
132
134
|
|
|
133
135
|
RCT_EXPORT_METHOD(createGestureHandler
|
|
134
|
-
: (nonnull NSString *)handlerName
|
|
135
|
-
: (
|
|
136
|
+
: (nonnull NSString *)handlerName handlerTag
|
|
137
|
+
: (double)handlerTag config
|
|
136
138
|
: (NSDictionary *)config)
|
|
137
139
|
{
|
|
138
140
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
139
|
-
[manager createGestureHandler:handlerName tag:handlerTag config:config];
|
|
141
|
+
[manager createGestureHandler:handlerName tag:[NSNumber numberWithDouble:handlerTag] config:config];
|
|
140
142
|
}];
|
|
141
143
|
}
|
|
142
144
|
|
|
143
|
-
RCT_EXPORT_METHOD(attachGestureHandler
|
|
144
|
-
: (nonnull NSNumber *)handlerTag toViewWithTag
|
|
145
|
-
: (nonnull NSNumber *)viewTag actionType
|
|
146
|
-
: (nonnull NSNumber *)actionType)
|
|
145
|
+
RCT_EXPORT_METHOD(attachGestureHandler : (double)handlerTag newView : (double)viewTag actionType : (double)actionType)
|
|
147
146
|
{
|
|
148
147
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
149
|
-
[manager attachGestureHandler:handlerTag
|
|
150
|
-
toViewWithTag:viewTag
|
|
151
|
-
withActionType:(RNGestureHandlerActionType)[actionType integerValue]];
|
|
148
|
+
[manager attachGestureHandler:[NSNumber numberWithDouble:handlerTag]
|
|
149
|
+
toViewWithTag:[NSNumber numberWithDouble:viewTag]
|
|
150
|
+
withActionType:(RNGestureHandlerActionType)[[NSNumber numberWithDouble:actionType] integerValue]];
|
|
152
151
|
}];
|
|
153
152
|
}
|
|
154
153
|
|
|
155
|
-
RCT_EXPORT_METHOD(updateGestureHandler : (
|
|
154
|
+
RCT_EXPORT_METHOD(updateGestureHandler : (double)handlerTag newConfig : (NSDictionary *)config)
|
|
156
155
|
{
|
|
157
156
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
158
|
-
[manager updateGestureHandler:handlerTag config:config];
|
|
157
|
+
[manager updateGestureHandler:[NSNumber numberWithDouble:handlerTag] config:config];
|
|
159
158
|
}];
|
|
160
159
|
}
|
|
161
160
|
|
|
162
|
-
RCT_EXPORT_METHOD(dropGestureHandler : (
|
|
161
|
+
RCT_EXPORT_METHOD(dropGestureHandler : (double)handlerTag)
|
|
163
162
|
{
|
|
164
163
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
165
|
-
[manager dropGestureHandler:handlerTag];
|
|
164
|
+
[manager dropGestureHandler:[NSNumber numberWithDouble:handlerTag]];
|
|
166
165
|
}];
|
|
167
166
|
}
|
|
168
167
|
|
|
169
|
-
RCT_EXPORT_METHOD(handleSetJSResponder
|
|
170
|
-
: (nonnull NSNumber *)viewTag blockNativeResponder
|
|
171
|
-
: (nonnull NSNumber *)blockNativeResponder)
|
|
168
|
+
RCT_EXPORT_METHOD(handleSetJSResponder : (double)viewTag blockNativeResponder : (BOOL)blockNativeResponder)
|
|
172
169
|
{
|
|
173
170
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
174
|
-
[manager handleSetJSResponder:viewTag blockNativeResponder:blockNativeResponder];
|
|
171
|
+
[manager handleSetJSResponder:[NSNumber numberWithDouble:viewTag] blockNativeResponder:blockNativeResponder];
|
|
175
172
|
}];
|
|
176
173
|
}
|
|
177
174
|
|
|
@@ -209,16 +206,16 @@ RCT_EXPORT_METHOD(flushOperations)
|
|
|
209
206
|
|
|
210
207
|
if (handler != nil) {
|
|
211
208
|
if (state == 1) { // FAILED
|
|
212
|
-
handler.recognizer.state =
|
|
209
|
+
handler.recognizer.state = RNGHGestureRecognizerStateFailed;
|
|
213
210
|
} else if (state == 2) { // BEGAN
|
|
214
|
-
handler.recognizer.state =
|
|
211
|
+
handler.recognizer.state = RNGHGestureRecognizerStatePossible;
|
|
215
212
|
} else if (state == 3) { // CANCELLED
|
|
216
|
-
handler.recognizer.state =
|
|
213
|
+
handler.recognizer.state = RNGHGestureRecognizerStateCancelled;
|
|
217
214
|
} else if (state == 4) { // ACTIVE
|
|
218
215
|
[handler stopActivationBlocker];
|
|
219
|
-
handler.recognizer.state =
|
|
216
|
+
handler.recognizer.state = RNGHGestureRecognizerStateBegan;
|
|
220
217
|
} else if (state == 5) { // ENDED
|
|
221
|
-
handler.recognizer.state =
|
|
218
|
+
handler.recognizer.state = RNGHGestureRecognizerStateEnded;
|
|
222
219
|
}
|
|
223
220
|
}
|
|
224
221
|
|
|
@@ -241,27 +238,7 @@ RCT_EXPORT_METHOD(flushOperations)
|
|
|
241
238
|
[_operations addObject:operation];
|
|
242
239
|
}
|
|
243
240
|
|
|
244
|
-
#
|
|
245
|
-
|
|
246
|
-
#ifdef RCT_NEW_ARCH_ENABLED
|
|
247
|
-
|
|
248
|
-
- (void)didMountComponentsWithRootTag:(NSInteger)rootTag
|
|
249
|
-
{
|
|
250
|
-
RCTAssertMainQueue();
|
|
251
|
-
|
|
252
|
-
if (_operations.count == 0) {
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
NSArray<GestureHandlerOperation> *operations = _operations;
|
|
257
|
-
_operations = [NSMutableArray new];
|
|
258
|
-
|
|
259
|
-
for (GestureHandlerOperation operation in operations) {
|
|
260
|
-
operation(self->_manager);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
#else
|
|
241
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
265
242
|
|
|
266
243
|
#pragma mark - RCTUIManagerObserver
|
|
267
244
|
|
|
@@ -279,11 +256,12 @@ RCT_EXPORT_METHOD(flushOperations)
|
|
|
279
256
|
NSArray<GestureHandlerOperation> *operations = _operations;
|
|
280
257
|
_operations = [NSMutableArray new];
|
|
281
258
|
|
|
282
|
-
[uiManager
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
259
|
+
[uiManager
|
|
260
|
+
addUIBlock:^(__unused RCTUIManager *manager, __unused NSDictionary<NSNumber *, RNGHUIView *> *viewRegistry) {
|
|
261
|
+
for (GestureHandlerOperation operation in operations) {
|
|
262
|
+
operation(self->_manager);
|
|
263
|
+
}
|
|
264
|
+
}];
|
|
287
265
|
}
|
|
288
266
|
|
|
289
267
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
@@ -317,4 +295,12 @@ RCT_EXPORT_METHOD(flushOperations)
|
|
|
317
295
|
};
|
|
318
296
|
}
|
|
319
297
|
|
|
298
|
+
#if RN_FABRIC_ENABLED
|
|
299
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
300
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
301
|
+
{
|
|
302
|
+
return std::make_shared<facebook::react::NativeRNGestureHandlerModuleSpecJSI>(params);
|
|
303
|
+
}
|
|
304
|
+
#endif
|
|
305
|
+
|
|
320
306
|
@end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#import <Foundation/Foundation.h>
|
|
2
|
-
|
|
3
2
|
#import "RNGHTouchEventType.h"
|
|
3
|
+
#import "RNGHUIKit.h"
|
|
4
4
|
|
|
5
5
|
#define MAX_POINTERS_COUNT 12
|
|
6
6
|
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
17
17
|
|
|
18
|
-
- (void)touchesBegan:(NSSet<
|
|
19
|
-
- (void)touchesMoved:(NSSet<
|
|
20
|
-
- (void)touchesEnded:(NSSet<
|
|
21
|
-
- (void)touchesCancelled:(NSSet<
|
|
18
|
+
- (void)touchesBegan:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event;
|
|
19
|
+
- (void)touchesMoved:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event;
|
|
20
|
+
- (void)touchesEnded:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event;
|
|
21
|
+
- (void)touchesCancelled:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event;
|
|
22
22
|
- (void)reset;
|
|
23
23
|
- (void)cancelPointers;
|
|
24
24
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
@implementation RNGestureHandlerPointerTracker {
|
|
7
7
|
__weak RNGestureHandler *_gestureHandler;
|
|
8
|
-
|
|
8
|
+
RNGHUITouch *_trackedPointers[MAX_POINTERS_COUNT];
|
|
9
9
|
int _trackedPointersCount;
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
return self;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
- (int)registerTouch:(
|
|
26
|
+
- (int)registerTouch:(RNGHUITouch *)touch
|
|
27
27
|
{
|
|
28
28
|
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
29
29
|
if (_trackedPointers[index] == nil) {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
return -1;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
- (int)unregisterTouch:(
|
|
38
|
+
- (int)unregisterTouch:(RNGHUITouch *)touch
|
|
39
39
|
{
|
|
40
40
|
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
41
41
|
if (_trackedPointers[index] == touch) {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
return -1;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
- (int)findTouchIndex:(
|
|
50
|
+
- (int)findTouchIndex:(RNGHUITouch *)touch
|
|
51
51
|
{
|
|
52
52
|
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
53
53
|
if (_trackedPointers[index] == touch) {
|
|
@@ -68,10 +68,15 @@
|
|
|
68
68
|
return count;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
- (NSDictionary *)extractPointerData:(int)index forTouch:(
|
|
71
|
+
- (NSDictionary *)extractPointerData:(int)index forTouch:(RNGHUITouch *)touch
|
|
72
72
|
{
|
|
73
|
+
#if TARGET_OS_OSX
|
|
74
|
+
CGPoint absolutePos = [touch locationInWindow];
|
|
75
|
+
CGPoint relativePos = [touch.window.contentView convertPoint:absolutePos fromView:_gestureHandler.recognizer.view];
|
|
76
|
+
#else
|
|
73
77
|
CGPoint relativePos = [touch locationInView:_gestureHandler.recognizer.view];
|
|
74
78
|
CGPoint absolutePos = [touch locationInView:_gestureHandler.recognizer.view.window];
|
|
79
|
+
#endif
|
|
75
80
|
|
|
76
81
|
return @{
|
|
77
82
|
@"id" : @(index),
|
|
@@ -90,7 +95,7 @@
|
|
|
90
95
|
int nextIndex = 0;
|
|
91
96
|
|
|
92
97
|
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
93
|
-
|
|
98
|
+
RNGHUITouch *touch = _trackedPointers[i];
|
|
94
99
|
if (touch != nil) {
|
|
95
100
|
data[nextIndex++] = [self extractPointerData:i forTouch:touch];
|
|
96
101
|
}
|
|
@@ -99,7 +104,7 @@
|
|
|
99
104
|
_allPointersData = [[NSArray alloc] initWithObjects:data count:registeredTouches];
|
|
100
105
|
}
|
|
101
106
|
|
|
102
|
-
- (void)touchesBegan:(NSSet<
|
|
107
|
+
- (void)touchesBegan:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
103
108
|
{
|
|
104
109
|
if (!_gestureHandler.needsPointerData) {
|
|
105
110
|
return;
|
|
@@ -110,7 +115,7 @@
|
|
|
110
115
|
NSDictionary *data[touches.count];
|
|
111
116
|
|
|
112
117
|
for (int i = 0; i < [touches count]; i++) {
|
|
113
|
-
|
|
118
|
+
RNGHUITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
114
119
|
int index = [self registerTouch:touch];
|
|
115
120
|
if (index >= 0) {
|
|
116
121
|
_trackedPointersCount++;
|
|
@@ -125,7 +130,7 @@
|
|
|
125
130
|
[self sendEvent];
|
|
126
131
|
}
|
|
127
132
|
|
|
128
|
-
- (void)touchesMoved:(NSSet<
|
|
133
|
+
- (void)touchesMoved:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
129
134
|
{
|
|
130
135
|
if (!_gestureHandler.needsPointerData) {
|
|
131
136
|
return;
|
|
@@ -136,7 +141,7 @@
|
|
|
136
141
|
NSDictionary *data[touches.count];
|
|
137
142
|
|
|
138
143
|
for (int i = 0; i < [touches count]; i++) {
|
|
139
|
-
|
|
144
|
+
RNGHUITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
140
145
|
int index = [self findTouchIndex:touch];
|
|
141
146
|
data[i] = [self extractPointerData:index forTouch:touch];
|
|
142
147
|
}
|
|
@@ -146,7 +151,7 @@
|
|
|
146
151
|
[self sendEvent];
|
|
147
152
|
}
|
|
148
153
|
|
|
149
|
-
- (void)touchesEnded:(NSSet<
|
|
154
|
+
- (void)touchesEnded:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
150
155
|
{
|
|
151
156
|
if (!_gestureHandler.needsPointerData) {
|
|
152
157
|
return;
|
|
@@ -160,7 +165,7 @@
|
|
|
160
165
|
NSDictionary *data[touches.count];
|
|
161
166
|
|
|
162
167
|
for (int i = 0; i < [touches count]; i++) {
|
|
163
|
-
|
|
168
|
+
RNGHUITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
164
169
|
int index = [self unregisterTouch:touch];
|
|
165
170
|
if (index >= 0) {
|
|
166
171
|
_trackedPointersCount--;
|
|
@@ -173,7 +178,7 @@
|
|
|
173
178
|
[self sendEvent];
|
|
174
179
|
}
|
|
175
180
|
|
|
176
|
-
- (void)touchesCancelled:(NSSet<
|
|
181
|
+
- (void)touchesCancelled:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
177
182
|
{
|
|
178
183
|
if (!_gestureHandler.needsPointerData) {
|
|
179
184
|
return;
|
|
@@ -213,7 +218,7 @@
|
|
|
213
218
|
NSDictionary *data[registeredTouches];
|
|
214
219
|
|
|
215
220
|
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
216
|
-
|
|
221
|
+
RNGHUITouch *touch = _trackedPointers[i];
|
|
217
222
|
if (touch != nil) {
|
|
218
223
|
data[nextIndex++] = [self extractPointerData:i forTouch:touch];
|
|
219
224
|
[self unregisterTouch:touch];
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag;
|
|
14
14
|
- (void)registerGestureHandler:(nonnull RNGestureHandler *)gestureHandler;
|
|
15
15
|
- (void)attachHandlerWithTag:(nonnull NSNumber *)handlerTag
|
|
16
|
-
toView:(nonnull
|
|
16
|
+
toView:(nonnull RNGHUIView *)view
|
|
17
17
|
withActionType:(RNGestureHandlerActionType)actionType;
|
|
18
18
|
- (void)dropHandlerWithTag:(nonnull NSNumber *)handlerTag;
|
|
19
19
|
- (void)dropAllHandlers;
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
#if !TARGET_OS_OSX
|
|
1
2
|
#import <UIKit/UIGestureRecognizerSubclass.h>
|
|
3
|
+
#else
|
|
4
|
+
#import <Appkit/NSGestureRecognizer.h>
|
|
5
|
+
#endif
|
|
2
6
|
|
|
3
7
|
@class RNGestureHandler;
|
|
4
8
|
|
|
9
|
+
#if !TARGET_OS_OSX
|
|
5
10
|
@interface RNManualActivationRecognizer : UIGestureRecognizer <UIGestureRecognizerDelegate>
|
|
11
|
+
#else
|
|
12
|
+
@interface RNManualActivationRecognizer : NSGestureRecognizer <NSGestureRecognizerDelegate>
|
|
13
|
+
#endif
|
|
6
14
|
|
|
7
15
|
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
8
16
|
- (void)fail;
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
_handler = gestureHandler;
|
|
13
13
|
_activePointers = 0;
|
|
14
14
|
self.delegate = self;
|
|
15
|
+
#if !TARGET_OS_OSX
|
|
15
16
|
self.cancelsTouchesInView = NO;
|
|
17
|
+
#endif
|
|
16
18
|
}
|
|
17
19
|
return self;
|
|
18
20
|
}
|
|
@@ -25,19 +27,35 @@
|
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
#if TARGET_OS_OSX
|
|
31
|
+
- (void)mouseUp:(NSEvent *)event
|
|
29
32
|
{
|
|
30
|
-
[super
|
|
33
|
+
[super mouseUp:event];
|
|
31
34
|
|
|
32
|
-
_activePointers
|
|
35
|
+
_activePointers -= 1;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
- (void)
|
|
38
|
+
- (void)mouseDown:(NSEvent *)event
|
|
36
39
|
{
|
|
37
|
-
[super
|
|
40
|
+
[super mouseDown:event];
|
|
41
|
+
|
|
42
|
+
_activePointers += 1;
|
|
43
|
+
|
|
44
|
+
if (_activePointers == 0) {
|
|
45
|
+
self.state = UIGestureRecognizerStateBegan;
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
48
|
|
|
40
|
-
|
|
49
|
+
#else
|
|
50
|
+
|
|
51
|
+
- (void)touchesBegan:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
52
|
+
{
|
|
53
|
+
[super touchesBegan:touches withEvent:event];
|
|
54
|
+
|
|
55
|
+
_activePointers += touches.count;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
- (void)touchesEnded:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
41
59
|
{
|
|
42
60
|
[super touchesEnded:touches withEvent:event];
|
|
43
61
|
|
|
@@ -48,7 +66,7 @@
|
|
|
48
66
|
}
|
|
49
67
|
}
|
|
50
68
|
|
|
51
|
-
- (void)touchesCancelled:(NSSet<
|
|
69
|
+
- (void)touchesCancelled:(NSSet<RNGHUITouch *> *)touches withEvent:(UIEvent *)event
|
|
52
70
|
{
|
|
53
71
|
[super touchesCancelled:touches withEvent:event];
|
|
54
72
|
|
|
@@ -56,6 +74,8 @@
|
|
|
56
74
|
[self reset];
|
|
57
75
|
}
|
|
58
76
|
|
|
77
|
+
#endif
|
|
78
|
+
|
|
59
79
|
- (void)reset
|
|
60
80
|
{
|
|
61
81
|
self.enabled = YES;
|