diff --git a/packages/react-native-gesture-handler/apple/RNGestureHandlerDetector.mm b/packages/react-native-gesture-handler/apple/RNGestureHandlerDetector.mm index b5e0059608..f591fecff8 100644 --- a/packages/react-native-gesture-handler/apple/RNGestureHandlerDetector.mm +++ b/packages/react-native-gesture-handler/apple/RNGestureHandlerDetector.mm @@ -33,11 +33,7 @@ + (BOOL)shouldBeRecycled - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - static const auto defaultProps = std::make_shared(); - _props = defaultProps; - _moduleId = -1; - _nativeHandlers = [NSMutableSet set]; - _attachedHandlers = [NSMutableSet set]; + [self setDefaultProps]; } return self; @@ -72,6 +68,15 @@ - (void)willMoveToWindow:(RNGHWindow *)newWindow } } +- (void)setDefaultProps +{ + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + _moduleId = -1; + _nativeHandlers = [NSMutableSet set]; + _attachedHandlers = [NSMutableSet set]; +} + - (void)dispatchStateChangeEvent:(RNGestureHandlerDetectorEventEmitter::OnGestureHandlerStateChange)event { if (_eventEmitter != nullptr) { @@ -127,6 +132,13 @@ - (BOOL)shouldAttachGestureToSubview:(NSNumber *)handlerTag return [[[handlerManager registry] handlerWithTag:handlerTag] wantsToAttachDirectlyToView]; } +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + + [self setDefaultProps]; +} + - (void)didAddSubview:(RNGHUIView *)view { [super didAddSubview:view];