diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 1f5dbd7f8f7e91..0ee88bcc58e916 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -660,7 +660,17 @@ - (RCTUIView *)betterHitTest:(CGPoint)point withEvent:(UIEvent *)event // [macOS } for (RCTUIView *subview in [self.subviews reverseObjectEnumerator]) { // [macOS] +#if !TARGET_OS_OSX // [macOS] RCTUIView *hitView = [subview hitTest:[subview convertPoint:point fromView:self] withEvent:event]; // [macOS] +#else // [macOS + // Native macOS views require the point to be in the super view coordinate space for hit testing. + CGPoint hitTestPoint = point; + // Fabric components use the target view coordinate space for hit testing + if ([subview isKindOfClass:[RCTViewComponentView class]]) { + hitTestPoint = [subview convertPoint:point fromView:self]; + } + RCTUIView *hitView = [subview hitTest:hitTestPoint withEvent:event]; // [macOS] +#endif // macOS] if (hitView) { return hitView; }