@@ -18,9 +18,11 @@ var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
1818var AccessibilityManager = NativeModules.AccessibilityManager;
19192020var VOICE_OVER_EVENT = 'voiceOverDidChange';
21+var ANNOUNCEMENT_DID_FINISH_EVENT = 'announcementDidFinish';
21222223type ChangeEventName = $Enum<{
2324change: string,
25+announcementFinished: string
2426}>;
25272628var _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 */
101108addEventListener: function (
102109eventName: ChangeEventName,
103110handler: 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);
110127return {
111128remove: AccessibilityInfo.removeEventListener.bind(null, eventName, handler),
@@ -121,6 +138,15 @@ var AccessibilityInfo = {
121138AccessibilityManager.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 */