Apple 的配音误读了我的一个视图的标题,该视图位于 UINavigation 控制器中。
在应用程序的其他部分,我添加了一个自定义可访问性标签,以帮助它正确发音公司名称。如何设置 UINavigationBar 的可访问性标签?
Apple 的配音误读了我的一个视图的标题,该视图位于 UINavigation 控制器中。
在应用程序的其他部分,我添加了一个自定义可访问性标签,以帮助它正确发音公司名称。如何设置 UINavigationBar 的可访问性标签?
这适用于 iOS 8.2。在viewDidLoad
:
self.navigationItem.accessibilityLabel = @"My accessible label";
当导航控制器转换到视图控制器时,accessibilityLabel
读取的是 而不是视图控制器title
。
我无法添加可访问性标签,但我找到了一种解决方法:
我用设置了可访问性的 UILabel 替换了 navigationItem 的标题视图。
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.text = @"myTitle";
[titleLabel setAccessibilityLabel:@"myCustomAccessiblityLabel"];
[titleLabel setFont:[UIFont boldSystemFontOfSize:20.0]];
[titleLabel setBackgroundColor:[UIColor clearColor]];
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel sizeToFit];
self.navigationItem.titleView = titleLabel;
我不确定为什么设置辅助功能标签不起作用,但上面的代码可以满足我的需要。
由于UINavigationBar
继承自UIView
,您应该能够设置其accessibilityLabel
属性。试试: yourUINavigationBar.accessibilityLabel = @"title";
。
此外,您可能需要确保它被标记为可访问性元素yourUINavigationBar.isAccessibilityElement = YES;
(并且不在另一个也被标记为可访问性元素的视图内)。(我猜这最后一点可能是问题所在,因为您似乎已经知道可访问性标签。您可以使用模拟器中的可访问性检查器来查看是否是这种情况,方法是查看元素周围的框点击它以查看它是否在比导航栏更大的东西周围。)
我在 iOS 11 和 12 上测试过类似的解决方法,它可以按预期工作。对于navigationItem.titleView
设置一个UILabel
对象,然后为navigationItem.titleView
.
self.navigationItem.titleView = YOUR_CUSTOM_UILABEL;
可访问性标识符部分
self.navigationItem.titleView.accessibilityIdentifier = YOUR_ACCESSIBILITY_IDENTIFIER;
您可以使用 Xcode 的Accessibility Inspector查看您的标识符。