GitHub

@@ -18,9 +18,11 @@ var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');

1818

var AccessibilityManager = NativeModules.AccessibilityManager;

19192020

var VOICE_OVER_EVENT = 'voiceOverDidChange';

21+

var ANNOUNCEMENT_DID_FINISH_EVENT = 'announcementDidFinish';

21222223

type ChangeEventName = $Enum<{

2324

change: string,

25+

announcementFinished: string

2426

}>;

25272628

var _subscriptions = new Map();

@@ -97,15 +99,30 @@ var AccessibilityInfo = {

9799

* - `change`: Fires when the state of the screen reader changes. The argument

98100

* to the event handler is a boolean. The boolean is `true` when a screen

99101

* reader is enabled and `false` otherwise.

102+

* - `announcementFinished`: iOS-only event. Fires when the screen reader has

103+

* finished making an announcement. The argument to the event handler is a dictionary

104+

* with these keys:

105+

* - `announcement`: The string announced by the screen reader.

106+

* - `success`: A boolean indicating whether the announcement was successfully made.

100107

*/

101108

addEventListener: function (

102109

eventName: ChangeEventName,

103110

handler: Function

104111

): Object {

105-

var listener = RCTDeviceEventEmitter.addListener(

106-

VOICE_OVER_EVENT,

107-

handler

108-

);

112+

var listener;

113+114+

if (eventName === 'change') {

115+

listener = RCTDeviceEventEmitter.addListener(

116+

VOICE_OVER_EVENT,

117+

handler

118+

);

119+

} else if (eventName === 'announcementFinished') {

120+

listener = RCTDeviceEventEmitter.addListener(

121+

ANNOUNCEMENT_DID_FINISH_EVENT,

122+

handler

123+

);

124+

}

125+109126

_subscriptions.set(handler, listener);

110127

return {

111128

remove: AccessibilityInfo.removeEventListener.bind(null, eventName, handler),

@@ -121,6 +138,15 @@ var AccessibilityInfo = {

121138

AccessibilityManager.setAccessibilityFocus(reactTag);

122139

},

123140141+

/**

142+

* iOS-Only. Post a string to be announced by the screen reader.

143+

*/

144+

announceForAccessibility: function(

145+

announcement: string

146+

): void {

147+

AccessibilityManager.announceForAccessibility(announcement);

148+

},

149+124150

/**

125151

* Remove an event handler.

126152

*/

Read the original on github.com ↗