Summary:
Changelog: [internal]

`accessibilityFrame` needs to take scrolling position into account. To fix that, we calculate the position dynamically.

Reviewed By: mdvacca

Differential Revision: D28056789

fbshipit-source-id: 3247b3e6fd64934e99563de83d163f657828e933
This commit is contained in:
Samuel Susla 2021-04-28 14:48:36 -07:00 коммит произвёл Facebook GitHub Bot
Родитель c68c151cda
Коммит c3d765883a
3 изменённых файлов: 16 добавлений и 6 удалений

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

@ -11,6 +11,13 @@ NS_ASSUME_NONNULL_BEGIN
@interface RCTAccessibilityElement : UIAccessibilityElement
/*
* Frame of the accessibility element in parent coordinate system.
* Set to `CGRectZero` to use size of the container.
*
* Default value: `CGRectZero`.
*/
@property (nonatomic, assign) CGRect frame;
@end
NS_ASSUME_NONNULL_END

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

@ -12,7 +12,11 @@
- (CGRect)accessibilityFrame
{
UIView *container = (UIView *)self.accessibilityContainer;
if (CGRectEqualToRect(_frame, CGRectZero)) {
return UIAccessibilityConvertFrameToScreenCoordinates(container.bounds, container);
} else {
return UIAccessibilityConvertFrameToScreenCoordinates(_frame, container);
}
}
@end

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

@ -62,7 +62,7 @@ using namespace facebook::react;
accessibilityLabel = RCTNSStringFromString(_attributedString.getString());
}
// add first element has the text for the whole textview in order to read out the whole text
UIAccessibilityElement *firstElement =
RCTAccessibilityElement *firstElement =
[[RCTAccessibilityElement alloc] initWithAccessibilityContainer:_view.superview];
firstElement.isAccessibilityElement = YES;
firstElement.accessibilityTraits = UIAccessibilityTraitStaticText;
@ -89,8 +89,8 @@ using namespace facebook::react;
truncatedText = fragmentText;
return;
}
UIAccessibilityElement *element =
[[UIAccessibilityElement alloc] initWithAccessibilityContainer:self->_view];
RCTAccessibilityElement *element =
[[RCTAccessibilityElement alloc] initWithAccessibilityContainer:self->_view];
element.isAccessibilityElement = YES;
if ([value isEqualToString:@"link"]) {
element.accessibilityTraits = UIAccessibilityTraitLink;
@ -100,8 +100,7 @@ using namespace facebook::react;
numberOfButtons++;
}
element.accessibilityLabel = fragmentText;
element.accessibilityFrame =
UIAccessibilityConvertFrameToScreenCoordinates(fragmentRect, self->_view);
element.frame = fragmentRect;
[elements addObject:element];
}];