iOS辅助功能 - 如何为UINavigationBar的标题设置辅助功能标签?

时间:2012-07-24 01:20:19

标签: ios objective-c accessibility voiceover

Apple的声音错误地反映了我的一个观点的标题,该观点位于UINavigation控制器内。

在应用程序的其他部分,我添加了一个自定义辅助功能标签,以帮助它正确发音公司名称。如何设置UINavigationBar的可访问性标签?

4 个答案:

答案 0 :(得分:15)

这适用于iOS 8.2。在viewDidLoad

self.navigationItem.accessibilityLabel = @"My accessible label";

当导航控制器转换到视图控制器时,将读取accessibilityLabel而不是视图控制器title

答案 1 :(得分:13)

我无法添加辅助功能标签,但我找到了解决方法:

我将navigationItem的标题视图替换为具有可访问性设置的UILabel。

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;

我不确定为什么设置辅助功能标签不起作用,但上面的代码可以满足我的需求。

答案 2 :(得分:0)

由于UINavigationBar继承自UIView,您应该能够设置其accessibilityLabel属性。尝试:yourUINavigationBar.accessibilityLabel = @"title";

此外,您可能需要确保将其标记为具有yourUINavigationBar.isAccessibilityElement = YES;的辅助功能元素(并且不在另一个也标记为辅助功能元素的视图中)。 (我猜这最后一点可能是问题所在,因为看起来您已经知道了可访问性标签。您可以在模拟器中使用辅助功能检查器,通过查看元素周围的框来查看是否是这种情况点击它以查看它是否比导航栏更大。)

答案 3 :(得分:0)

我已经在iOS 11和12上测试了类似的解决方法,该方法可以正常工作。为grid.table(head(iris), theme=ttheme_default(base_family="monospace")) 设置一个navigationItem.titleView对象,然后为UILabel设置可访问性标识符。

navigationItem.titleView

accessibilityIdentifier部分

self.navigationItem.titleView = YOUR_CUSTOM_UILABEL;

您可以使用Xcode的 Accessibility Inspector (辅助功能检查器)查看您的标识符。