diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 5e53470f189..c0d5eec27e1 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -229,6 +229,11 @@ using namespace facebook::react; self.accessibilityElement.accessibilityElementsHidden = newViewProps.accessibilityElementsHidden; } + if (oldViewProps.accessibilityTraits != newViewProps.accessibilityTraits) { + self.accessibilityElement.accessibilityTraits = + RCTUIAccessibilityTraitsFromAccessibilityTraits(newViewProps.accessibilityTraits); + } + // `accessibilityIgnoresInvertColors` if (oldViewProps.accessibilityIgnoresInvertColors != newViewProps.accessibilityIgnoresInvertColors) { #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */ diff --git a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp index 71c44e1f191..c7897a3683d 100644 --- a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp +++ b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp @@ -20,6 +20,10 @@ AccessibilityProps::AccessibilityProps( RawProps const &rawProps) : accessible( convertRawProp(rawProps, "accessible", sourceProps.accessible)), + accessibilityTraits(convertRawProp( + rawProps, + "accessibilityRole", + sourceProps.accessibilityTraits)), accessibilityLabel(convertRawProp( rawProps, "accessibilityLabel", diff --git a/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h b/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h index cde43040f6a..a6b6b4e919d 100644 --- a/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h +++ b/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h @@ -38,7 +38,7 @@ inline void fromString(const std::string &string, AccessibilityTraits &result) { result = AccessibilityTraits::PlaysSound; return; } - if (string == "keyboardkey") { + if (string == "keyboardkey" || string == "key") { result = AccessibilityTraits::KeyboardKey; return; } @@ -78,7 +78,16 @@ inline void fromString(const std::string &string, AccessibilityTraits &result) { result = AccessibilityTraits::Header; return; } - abort(); + if (string == "imagebutton") { + result = AccessibilityTraits::Image | AccessibilityTraits::Button; + return; + } + if (string == "summary") { + result = AccessibilityTraits::SummaryElement; + return; + } + + result = AccessibilityTraits::None; } inline void fromRawValue(const RawValue &value, AccessibilityTraits &result) {