diff --git a/React/Views/RCTViewManager.m b/React/Views/RCTViewManager.m index 626e923d3..ede084d1a 100644 --- a/React/Views/RCTViewManager.m +++ b/React/Views/RCTViewManager.m @@ -112,6 +112,7 @@ RCT_REMAP_VIEW_PROPERTY(accessibilityLabel, reactAccessibilityElement.accessibil RCT_REMAP_VIEW_PROPERTY(accessibilityTraits, reactAccessibilityElement.accessibilityTraits, UIAccessibilityTraits) RCT_REMAP_VIEW_PROPERTY(accessibilityViewIsModal, reactAccessibilityElement.accessibilityViewIsModal, BOOL) RCT_REMAP_VIEW_PROPERTY(accessibilityElementsHidden, reactAccessibilityElement.accessibilityElementsHidden, BOOL) +RCT_REMAP_VIEW_PROPERTY(accessibilityIgnoresInvertColors, reactAccessibilityElement.shouldAccessibilityIgnoresInvertColors, BOOL) RCT_REMAP_VIEW_PROPERTY(onAccessibilityAction, reactAccessibilityElement.onAccessibilityAction, RCTDirectEventBlock) RCT_REMAP_VIEW_PROPERTY(onAccessibilityTap, reactAccessibilityElement.onAccessibilityTap, RCTDirectEventBlock) RCT_REMAP_VIEW_PROPERTY(onMagicTap, reactAccessibilityElement.onMagicTap, RCTDirectEventBlock) diff --git a/React/Views/UIView+React.h b/React/Views/UIView+React.h index 94de7aae7..3d0ac2c5a 100644 --- a/React/Views/UIView+React.h +++ b/React/Views/UIView+React.h @@ -27,6 +27,12 @@ */ @property (nonatomic, copy) NSString *nativeID; +/** + * Determines whether or not a view should ignore inverted colors or not. Used to set + * UIView property accessibilityIgnoresInvertColors in iOS 11+. + */ +@property (nonatomic, assign) BOOL shouldAccessibilityIgnoresInvertColors; + /** * Layout direction of the view. * Internally backed to `semanticContentAttribute` property. diff --git a/React/Views/UIView+React.m b/React/Views/UIView+React.m index 22d14f82c..613083b4c 100644 --- a/React/Views/UIView+React.m +++ b/React/Views/UIView+React.m @@ -35,6 +35,25 @@ objc_setAssociatedObject(self, @selector(nativeID), nativeID, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } +- (BOOL)shouldAccessibilityIgnoresInvertColors +{ +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */ + if (@available(iOS 11.0, *)) { + return self.accessibilityIgnoresInvertColors; + } +#endif + return NO; +} + +- (void)setShouldAccessibilityIgnoresInvertColors:(BOOL)shouldAccessibilityIgnoresInvertColors +{ +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */ + if (@available(iOS 11.0, *)) { + self.accessibilityIgnoresInvertColors = shouldAccessibilityIgnoresInvertColors; + } +#endif +} + - (BOOL)isReactRootView { return RCTIsReactRootView(self.reactTag);