Add support for accessibilityRole = "switch"

Summary:
Changelog:
[Internal] - Add support for accessibilityRole = "switch"

Reviewed By: sammy-SC

Differential Revision: D22906500

fbshipit-source-id: 81dfbfd56a24c89ffedc0fde5a63f7bdeed0c5db
This commit is contained in:
Jiayan Zhuang 2020-08-06 13:14:35 -07:00 коммит произвёл Facebook GitHub Bot
Родитель 776a415d98
Коммит 3f405dcbd2
4 изменённых файлов: 19 добавлений и 1 удалений

Просмотреть файл

@ -520,6 +520,15 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
{
auto const &props = *std::static_pointer_cast<ViewProps const>(_props);
// Handle Switch.
if ((self.accessibilityTraits & AccessibilityTraitSwitch) == AccessibilityTraitSwitch) {
if (props.accessibilityState.checked == AccessibilityState::Checked) {
return @"1";
} else if (props.accessibilityState.checked == AccessibilityState::Unchecked) {
return @"0";
}
}
// Handle states which haven't already been handled.
if (props.accessibilityState.checked == AccessibilityState::Checked) {
return @"checked";

Просмотреть файл

@ -71,6 +71,8 @@ inline UIEdgeInsets RCTUIEdgeInsetsFromEdgeInsets(const facebook::react::EdgeIns
return {edgeInsets.top, edgeInsets.left, edgeInsets.bottom, edgeInsets.right};
}
UIAccessibilityTraits const AccessibilityTraitSwitch = 0x20000000000001;
inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
facebook::react::AccessibilityTraits accessibilityTraits)
{
@ -124,6 +126,9 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
if ((accessibilityTraits & AccessibilityTraits::Header) != AccessibilityTraits::None) {
result |= UIAccessibilityTraitHeader;
}
if ((accessibilityTraits & AccessibilityTraits::Switch) != AccessibilityTraits::None) {
result |= AccessibilityTraitSwitch;
}
return result;
};

Просмотреть файл

@ -30,6 +30,7 @@ enum class AccessibilityTraits : uint32_t {
AllowsDirectInteraction = (1 << 13),
CausesPageTurn = (1 << 14),
Header = (1 << 15),
Switch = (1 << 16),
};
constexpr enum AccessibilityTraits operator|(

Просмотреть файл

@ -87,7 +87,10 @@ inline void fromString(const std::string &string, AccessibilityTraits &result) {
result = AccessibilityTraits::SummaryElement;
return;
}
if (string == "switch") {
result = AccessibilityTraits::Switch;
return;
}
result = AccessibilityTraits::None;
}