From 2945fa6e0e4799ef3c0edb87e07fd7e931bb58d8 Mon Sep 17 00:00:00 2001 From: Devan Buggay Date: Thu, 18 Sep 2025 00:36:55 -0700 Subject: [PATCH] Hook up focus/blur events (#53827) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53827 Hook up focus/blur events to view. Changelog: [Internal] Reviewed By: rozele Differential Revision: D82146291 fbshipit-source-id: 3cb90d22c00d067099c4c6fac734f27030d87639 --- .../View/RCTViewComponentView.mm | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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 7642623b5a5..eda8cacb542 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -1568,6 +1568,34 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) [self resignFirstResponder]; } +#pragma mark - Focus Events + +- (BOOL)becomeFirstResponder +{ + if (![super becomeFirstResponder]) { + return NO; + } + + if (_eventEmitter && ReactNativeFeatureFlags::enableImperativeFocus()) { + _eventEmitter->onFocus(); + } + + return YES; +} + +- (BOOL)resignFirstResponder +{ + if (![super resignFirstResponder]) { + return NO; + } + + if (_eventEmitter && ReactNativeFeatureFlags::enableImperativeFocus()) { + _eventEmitter->onBlur(); + } + + return YES; +} + @end #ifdef __cplusplus