diff --git a/React/Fabric/RCTSurfaceTouchHandler.mm b/React/Fabric/RCTSurfaceTouchHandler.mm index 60fb7ae1e35..205f7fae67b 100644 --- a/React/Fabric/RCTSurfaceTouchHandler.mm +++ b/React/Fabric/RCTSurfaceTouchHandler.mm @@ -651,6 +651,8 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithTarget : (id)target action : (SEL)act NSTimeInterval timestamp = CACurrentMediaTime(); + BOOL hasMoveListenerInEventPath = NO; + // Over if (prevTargetView != targetView) { BOOL shouldEmitOverEvent = IsAnyViewInPathListeningToEvent(eventPathViews, ViewEvents::Offset::PointerOver); @@ -686,6 +688,19 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithTarget : (id)target action : (SEL)act if (shouldEmitEvent && !hasParentEnterListener) { hasParentEnterListener = YES; } + + if (!hasMoveListenerInEventPath && IsViewListeningToEvent(componentView, ViewEvents::Offset::PointerMove2)) { + hasMoveListenerInEventPath = YES; + } + } + + // Moving + if (hasMoveListenerInEventPath) { + SharedTouchEventEmitter eventEmitter = GetTouchEmitterFromView(targetView, [recognizer locationInView:targetView]); + if (eventEmitter != nil) { + PointerEvent event = CreatePointerEventFromIncompleteHoverData(targetView, clientLocation, timestamp); + eventEmitter->onPointerMove2(event); + } } // Out