在iPhone天气应用程序中,当使用VoiceOver时,我注意到第一次点击一个部分,它会宣布该部分。
例如,在iOS 9中,首次点击中间条带上的任何项目将在继续描述您点击的元素之前宣布“每小时预测”。点击条带中的任何其他内容都不会宣布“每小时预测”。
点击底部表格上的任何内容,将在继续描述您点击的元素之前宣布“每日预测”。点击此表中的任何其他内容不会以“每日预测”为前缀。
是否有一个简单的API来命名您应用的各个部分?或者您是否必须通过跟踪配音光标并动态更改标签来手动执行此操作? (这是否有效?在点击某些内容之后但在阅读之前,您是否可以更改accessibilityLabel?)
答案 0 :(得分:2)
我猜有两种方法:
对UITableViewCell进行子类化并覆盖accessibilityLabel。
- (NSString *) accessibilityLabel
{
NSString* voiceOverString;
// append section title on voiceOverString and then the elements value
return voiceOverString;
}
从Apple docs查看此链接: 您可以从cellForRowAtIndexPath设置单元格的AccessibilityLabel。该示例适用于天气应用程序本身。
答案 1 :(得分:0)
是否有一个简单的API来命名您应用的各个部分?
似乎最恰当的参考是Apple's Accessibility Programming Guide。
及其API,Apple's UIAccessibility Documentation。
设置shouldGroupAccessibilityChildren
属性似乎是实现目标的最佳方式。链接的API将其描述为
一个布尔值,指示VoiceOver是否应将作为接收器子节点的元素组合在一起,而不管它们在屏幕上的位置如何。在垂直列中项目的父视图上将此属性的值设置为YES会导致VoiceOver尊重应用程序的分组并正确导航它们。
要记住的事情:
isAccessibilityElement
属性进行检查;标准UIKit控件和视图默认情况下实现UIAccessibility协议)
view.isAccessibilityElement = true
accessibilityLabel
属性标识元素accessibilityHint
属性描述元素触发的操作