diff --git a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js index 425c40e3437..f84ff29805b 100644 --- a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +++ b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js @@ -112,6 +112,15 @@ var AccessibilityInfo = { }; }, + /** + * iOS-Only. Set accessibility focus to a react component. + */ + setAccessibilityFocus: function( + reactTag: number + ): void { + AccessibilityManager.setAccessibilityFocus(reactTag); + }, + /** * Remove an event handler. */ diff --git a/React/Modules/RCTAccessibilityManager.m b/React/Modules/RCTAccessibilityManager.m index a9c341aaaed..5e415bf1298 100644 --- a/React/Modules/RCTAccessibilityManager.m +++ b/React/Modules/RCTAccessibilityManager.m @@ -9,6 +9,7 @@ #import "RCTAccessibilityManager.h" +#import "RCTUIManager.h" #import "RCTBridge.h" #import "RCTConvert.h" #import "RCTEventDispatcher.h" @@ -162,6 +163,14 @@ RCT_EXPORT_METHOD(setAccessibilityContentSizeMultipliers:(NSDictionary *)JSMulti self.multipliers = multipliers; } +RCT_EXPORT_METHOD(setAccessibilityFocus:(nonnull NSNumber *)reactTag) +{ + dispatch_async(dispatch_get_main_queue(), ^{ + UIView *view = [self.bridge.uiManager viewForReactTag:reactTag]; + UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, view); + }); +} + RCT_EXPORT_METHOD(getMultiplier:(RCTResponseSenderBlock)callback) { if (callback) {