diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 5ce4369a459..5e53470f189 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -531,26 +531,42 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) - (BOOL)accessibilityActivate { - _eventEmitter->onAccessibilityTap(); - return YES; + if (_eventEmitter && _props->onAccessibilityTap) { + _eventEmitter->onAccessibilityTap(); + return YES; + } else { + return NO; + } } - (BOOL)accessibilityPerformMagicTap { - _eventEmitter->onAccessibilityMagicTap(); - return YES; + if (_eventEmitter && _props->onAccessibilityMagicTap) { + _eventEmitter->onAccessibilityMagicTap(); + return YES; + } else { + return NO; + } } - (BOOL)accessibilityPerformEscape { - _eventEmitter->onAccessibilityEscape(); - return YES; + if (_eventEmitter && _props->onAccessibilityEscape) { + _eventEmitter->onAccessibilityEscape(); + return YES; + } else { + return NO; + } } - (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action { - _eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name)); - return YES; + if (_eventEmitter && _props->onAccessibilityAction) { + _eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name)); + return YES; + } else { + return NO; + } } - (SharedTouchEventEmitter)touchEventEmitterAtPoint:(CGPoint)point diff --git a/React/Views/RCTView.m b/React/Views/RCTView.m index b17cc681d88..831a1b52fc5 100644 --- a/React/Views/RCTView.m +++ b/React/Views/RCTView.m @@ -393,8 +393,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:unused) { if ([self performAccessibilityAction:@"activate"]) { return YES; - } - else if (_onAccessibilityTap) { + } else if (_onAccessibilityTap) { _onAccessibilityTap(nil); return YES; } else { diff --git a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp index 81e0b2a0b44..71c44e1f191 100644 --- a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp +++ b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp @@ -44,6 +44,22 @@ AccessibilityProps::AccessibilityProps( rawProps, "accessibilityIgnoresInvertColors", sourceProps.accessibilityIgnoresInvertColors)), + onAccessibilityTap(convertRawProp( + rawProps, + "onAccessibilityTap", + sourceProps.onAccessibilityTap)), + onAccessibilityMagicTap(convertRawProp( + rawProps, + "onAccessibilityMagicTap", + sourceProps.onAccessibilityMagicTap)), + onAccessibilityEscape(convertRawProp( + rawProps, + "onAccessibilityEscape", + sourceProps.onAccessibilityEscape)), + onAccessibilityAction(convertRawProp( + rawProps, + "onAccessibilityAction", + sourceProps.onAccessibilityAction)), testId(convertRawProp(rawProps, "testId", sourceProps.testId)) {} #pragma mark - DebugStringConvertible diff --git a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h index 344f8c74694..6ef8015d9bd 100644 --- a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h +++ b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h @@ -32,6 +32,11 @@ class AccessibilityProps { bool const accessibilityViewIsModal{false}; bool const accessibilityElementsHidden{false}; bool const accessibilityIgnoresInvertColors{false}; + bool const onAccessibilityTap{}; + bool const onAccessibilityMagicTap{}; + bool const onAccessibilityEscape{}; + bool const onAccessibilityAction{}; + std::string const testId{""}; #pragma mark - DebugStringConvertible