mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
provide public hook to programatically turn on voiceover
Summary: Changelog: [Internal] https://fb.workplace.com/groups/rn.support/posts/6677051292343429 ax team is building a tool to extract information about the views for design reviewers, and RN has some AX information that is not working atm because of dependency on whether voiceover is on or not. so, this will give them the ability to programmatically set that field and hopefully be able to get accurate ax info Reviewed By: ikenwoo Differential Revision: D31010566 fbshipit-source-id: 4c8a33fce40266b270dd5994442c8472ca88f5dd
This commit is contained in:
committed by
Facebook GitHub Bot
parent
ea53d3a9c2
commit
d8931e2f94
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import "RCTAccessibilityManager.h"
|
||||
|
||||
#import <React/RCTDefines.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
RCT_EXTERN_C_BEGIN
|
||||
|
||||
// Only to be used for testing and internal tooling. Do not use this in production.
|
||||
void RCTAccessibilityManagerSetIsVoiceOverEnabled(RCTAccessibilityManager *accessibiltyManager, BOOL isVoiceOverEnabled);
|
||||
|
||||
RCT_EXTERN_C_END
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#import "RCTAccessibilityManager.h"
|
||||
#import "RCTAccessibilityManager+Internal.h"
|
||||
|
||||
#import <FBReactNativeSpec/FBReactNativeSpec.h>
|
||||
#import <React/RCTBridge.h>
|
||||
@@ -183,9 +184,14 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)voiceVoiceOverStatusDidChange:(__unused NSNotification *)notification
|
||||
{
|
||||
BOOL newIsVoiceOverEnabled = UIAccessibilityIsVoiceOverRunning();
|
||||
if (_isVoiceOverEnabled != newIsVoiceOverEnabled) {
|
||||
_isVoiceOverEnabled = newIsVoiceOverEnabled;
|
||||
BOOL isVoiceOverEnabled = UIAccessibilityIsVoiceOverRunning();
|
||||
[self _setIsVoiceOverEnabled:isVoiceOverEnabled];
|
||||
}
|
||||
|
||||
- (void)_setIsVoiceOverEnabled:(BOOL)isVoiceOverEnabled
|
||||
{
|
||||
if (_isVoiceOverEnabled != isVoiceOverEnabled) {
|
||||
_isVoiceOverEnabled = isVoiceOverEnabled;
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
[[_moduleRegistry moduleForName:"EventDispatcher"] sendDeviceEventWithName:@"screenReaderChanged"
|
||||
@@ -350,6 +356,15 @@ RCT_EXPORT_METHOD(getCurrentVoiceOverState
|
||||
return std::make_shared<facebook::react::NativeAccessibilityManagerSpecJSI>(params);
|
||||
}
|
||||
|
||||
#pragma mark - Internal
|
||||
|
||||
void RCTAccessibilityManagerSetIsVoiceOverEnabled(
|
||||
RCTAccessibilityManager *accessibilityManager,
|
||||
BOOL isVoiceOverEnabled)
|
||||
{
|
||||
[accessibilityManager _setIsVoiceOverEnabled:isVoiceOverEnabled];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation RCTBridge (RCTAccessibilityManager)
|
||||
|
||||
Reference in New Issue
Block a user