iOS: Remove leading space from accessibilityLabel
Summary: In some cases, the accessibilityLabel contains a leading space. This is because `RCTRecursiveAccessibilityLabel` adds a space before every iteration of the loop including the first. After this change, the contract is that: - `RCTRecursiveAccessibilityLabel` always returns a string with a leading space. - `accessibilityLabel` never returns a string with a leading space. **Test plan** I created a test app with the following code: ``` <View style={{height: 100, width: 100, backgroundColor: 'steelblue'}} accessible={true}> <View style={{height: 20, width: 20, backgroundColor: 'red'}} accessibilityLabel='One' /> <View style={{height: 20, width: 20, backgroundColor: 'yellow'}} accessibilityLabel='Two' /> <View style={{height: 20, width: 20, backgroundColor: 'green'}} accessibilityLabel='Three' /> </View> ``` Before this change, the accessibilityLabel of the outermost View was " One Two Three" (notice the leading space). After this change, it is "One Two Three" as desired. Adam Closes https://github.com/facebook/react-native/pull/12269 Reviewed By: javache Differential Revision: D4596761 Pulled By: shergin fbshipit-source-id: 7d5ff704e858d9f277d1547339a2831ffa90f592
This commit is contained in:
parent
15429e333f
commit
6fbc2c9972
|
@ -81,11 +81,17 @@
|
|||
|
||||
static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
|
||||
{
|
||||
BOOL isFirstIteration = YES;
|
||||
NSMutableString *str = [NSMutableString stringWithString:@""];
|
||||
for (UIView *subview in view.subviews) {
|
||||
if (isFirstIteration) {
|
||||
isFirstIteration = NO;
|
||||
} else {
|
||||
[str appendString:@" "];
|
||||
}
|
||||
|
||||
NSString *label = subview.accessibilityLabel;
|
||||
if (label) {
|
||||
[str appendString:@" "];
|
||||
[str appendString:label];
|
||||
} else {
|
||||
[str appendString:RCTRecursiveAccessibilityLabel(subview)];
|
||||
|
|
Loading…
Reference in New Issue