Fix frames for in text links
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:
Родитель
c68c151cda
Коммит
c3d765883a
|
@ -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];
|
||||
}];
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче