Skip to content

Commit

Permalink
Refactor support for setting custom accessibilityElements
Browse files Browse the repository at this point in the history
Using the existing `accessibilityElements` ivar should be sufficient to
support custom accessibility elements, and thus this commit removes the
use of `customAccessibilityElements`.

Also, this commit adds a check to see if the node is loaded before one
can set custom accessibility elements on the node to avoid loading the view
unnecessarily.
  • Loading branch information
raycsh017 committed May 21, 2019
1 parent 22f016e commit f263f4b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
1 change: 0 additions & 1 deletion Source/Details/_ASDisplayView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ @implementation _ASDisplayView
BOOL _inPointInside;

NSArray *_accessibilityElements;
NSArray *_customAccessibilityElements;
CGRect _lastAccessibilityElementsFrame;

_ASDisplayViewMethodOverrides _methodOverrides;
Expand Down
17 changes: 10 additions & 7 deletions Source/Details/_ASDisplayViewAccessiblity.mm
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ static void CollectAccessibilityElementsForView(UIView *view, NSMutableArray *el

@interface _ASDisplayView () {
NSArray *_accessibilityElements;
NSArray *_customAccessibilityElements;
}

@end
Expand All @@ -257,8 +256,7 @@ @implementation _ASDisplayView (UIAccessibilityContainer)
- (void)setAccessibilityElements:(NSArray *)accessibilityElements
{
ASDisplayNodeAssertMainThread();
_accessibilityElements = nil;
_customAccessibilityElements = accessibilityElements;
_accessibilityElements = accessibilityElements;
}

- (NSArray *)accessibilityElements
Expand All @@ -270,14 +268,15 @@ - (NSArray *)accessibilityElements
return @[];
}

if(_customAccessibilityElements != nil && _customAccessibilityElements.count > 0) {
return _customAccessibilityElements;
if (_accessibilityElements != nil) {
return _accessibilityElements;
}

if (_accessibilityElements == nil || ASActivateExperimentalFeature(ASExperimentalDisableAccessibilityCache)) {
_accessibilityElements = [viewNode accessibilityElements];
return [viewNode accessibilityElements];
}
return _accessibilityElements;

return nil;
}

@end
Expand All @@ -286,6 +285,10 @@ @implementation ASDisplayNode (AccessibilityInternal)

- (void)setAccessibilityElements:(NSArray *)accessibilityElements
{
if (!self.isNodeLoaded) {
ASDisplayNodeFailAssert(@"Cannot set accessibilityElements since node is not loaded");
return;
}
self.view.accessibilityElements = accessibilityElements;
}

Expand Down

0 comments on commit f263f4b

Please sign in to comment.