Skip to content

Commit 679bff2

Browse files
Ziqi Chenfacebook-github-bot
Ziqi Chen
authored andcommitted
added native iOS functionality for prop currentViewStates
Summary: Added Native iOS functionality for prop currentViewStates. On iOS, this property modifies both the view property userInteractionEnabled and also adds corresponding UIAccessibilityTraits to the view. If disabled is passed in, userInteractionEnabled of the view will be set to false. The value that is passed into currentviewStates is converted to a UIAccessibilityTrait Enum and masked in with existing UIAccessibilityTraits on that native view. The native implementation for accessibilityRole is also changed to also mask new UIAccessibilityTraits with existing ones. Reviewed By: PeteTheHeat Differential Revision: D8842691 fbshipit-source-id: 919267300c70efed93a7a92377a0178bd8885eb5
1 parent c1d0ccd commit 679bff2

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

React/Views/RCTViewManager.m

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ - (RCTShadowView *)shadowView
112112
RCT_REMAP_VIEW_PROPERTY(accessibilityActions, reactAccessibilityElement.accessibilityActions, NSString)
113113
RCT_REMAP_VIEW_PROPERTY(accessibilityLabel, reactAccessibilityElement.accessibilityLabel, NSString)
114114
RCT_REMAP_VIEW_PROPERTY(accessibilityTraits, reactAccessibilityElement.accessibilityTraits, UIAccessibilityTraits)
115-
RCT_REMAP_VIEW_PROPERTY(accessibilityRole, reactAccessibilityElement.accessibilityTraits, UIAccessibilityTraits)
116115
RCT_REMAP_VIEW_PROPERTY(accessibilityViewIsModal, reactAccessibilityElement.accessibilityViewIsModal, BOOL)
117116
RCT_REMAP_VIEW_PROPERTY(accessibilityElementsHidden, reactAccessibilityElement.accessibilityElementsHidden, BOOL)
118117
RCT_REMAP_VIEW_PROPERTY(accessibilityIgnoresInvertColors, reactAccessibilityElement.shouldAccessibilityIgnoresInvertColors, BOOL)
@@ -149,6 +148,21 @@ - (RCTShadowView *)shadowView
149148
view.layer.allowsEdgeAntialiasing = !CATransform3DIsIdentity(view.layer.transform);
150149
}
151150

151+
RCT_CUSTOM_VIEW_PROPERTY(accessibilityRole, UIAccessibilityTraits, RCTView)
152+
{
153+
view.reactAccessibilityElement.accessibilityTraits |= json ? [RCTConvert UIAccessibilityTraits:json] : defaultView.accessibilityTraits;
154+
}
155+
156+
RCT_CUSTOM_VIEW_PROPERTY(currentViewStates, UIAccessibilityTraits, RCTView)
157+
{
158+
UIAccessibilityTraits traits = json ? [RCTConvert UIAccessibilityTraits:json] : defaultView.accessibilityTraits;
159+
view.reactAccessibilityElement.accessibilityTraits |= traits;
160+
if (traits == UIAccessibilityTraitNotEnabled || traits == (UIAccessibilityTraitNotEnabled | UIAccessibilityTraitSelected))
161+
{
162+
view.userInteractionEnabled = NO;
163+
}
164+
}
165+
152166
RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTPointerEvents, RCTView)
153167
{
154168
if ([view respondsToSelector:@selector(setPointerEvents:)]) {

0 commit comments

Comments
 (0)