Make AccessibilityInfo.setAccessibilityFocus cross platform (#20229)
Summary: Currently, `AccessibilityInfo.setAccessibilityFocus` is only available on iOS. The same behaviour can be achieved on Android by dispatching the proper accessibility event. I implemented the same function for Android, to make life slightly more convenient for the developer. Today, developers must write something like this: ``` if (Platform.OS === 'ios') { AccessibilityInfo.setAccessibilityFocus(reactTag) } else { UIManager.sendAccessibilityEvent(reactTag, 8) } ``` With this change, the following is enough for both Android and iOS: ``` AccessibilityInfo.setAccessibilityFocus(reactTag) ``` Pull Request resolved: https://github.com/facebook/react-native/pull/20229 Differential Revision: D8874107 Pulled By: mdvacca fbshipit-source-id: a6ffd7bb89ce56d6d65b06419633a71dcf3d0733
This commit is contained in:
parent
7ff7572e5c
commit
be715ec705
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
const NativeModules = require('NativeModules');
|
const NativeModules = require('NativeModules');
|
||||||
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
|
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
|
||||||
|
const UIManager = require('UIManager');
|
||||||
|
|
||||||
const RCTAccessibilityInfo = NativeModules.AccessibilityInfo;
|
const RCTAccessibilityInfo = NativeModules.AccessibilityInfo;
|
||||||
|
|
||||||
|
@ -66,6 +67,18 @@ const AccessibilityInfo = {
|
||||||
listener.remove();
|
listener.remove();
|
||||||
_subscriptions.delete(handler);
|
_subscriptions.delete(handler);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set accessibility focus to a react component.
|
||||||
|
*
|
||||||
|
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#setaccessibilityfocus
|
||||||
|
*/
|
||||||
|
setAccessibilityFocus: function(reactTag: number): void {
|
||||||
|
UIManager.sendAccessibilityEvent(
|
||||||
|
reactTag,
|
||||||
|
UIManager.AccessibilityEventTypes.typeViewFocused,
|
||||||
|
);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = AccessibilityInfo;
|
module.exports = AccessibilityInfo;
|
||||||
|
|
|
@ -93,8 +93,6 @@ const AccessibilityInfo = {
|
||||||
/**
|
/**
|
||||||
* Set accessibility focus to a react component.
|
* Set accessibility focus to a react component.
|
||||||
*
|
*
|
||||||
* @platform ios
|
|
||||||
*
|
|
||||||
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#setaccessibilityfocus
|
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#setaccessibilityfocus
|
||||||
*/
|
*/
|
||||||
setAccessibilityFocus: function(reactTag: number): void {
|
setAccessibilityFocus: function(reactTag: number): void {
|
||||||
|
|
|
@ -134,6 +134,8 @@ import java.util.Map;
|
||||||
MapBuilder.of(
|
MapBuilder.of(
|
||||||
"typeWindowStateChanged",
|
"typeWindowStateChanged",
|
||||||
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
|
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
|
||||||
|
"typeViewFocused",
|
||||||
|
AccessibilityEvent.TYPE_VIEW_FOCUSED,
|
||||||
"typeViewClicked",
|
"typeViewClicked",
|
||||||
AccessibilityEvent.TYPE_VIEW_CLICKED));
|
AccessibilityEvent.TYPE_VIEW_CLICKED));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue