首页 文章

如何让VoiceOver在iOS中宣布章节标签?

提问于
浏览
8

在iPhone天气应用程序中,当使用VoiceOver时,我注意到第一次点击一个部分,它会宣布该部分 .

例如,在iOS 9中,首次点击中间条带上的任何项目将在继续描述您点击的元素之前宣布“每小时预测” . 点击条带中的任何其他内容将不会宣布“每小时预测” .

点击底部表格上的任何内容,将在继续描述您点击的元素之前发布“每日预测” . 点击此表中的任何其他内容不会以“每日预测”作为前缀 .

是否有一个简单的API来命名您应用的各个部分?或者您是否必须通过跟踪配音光标并动态更改标签来手动执行此操作? (这是否有效?在点击某些内容之后但是在读取之前,您是否可以更改accessibilityLabel?)

2 回答

  • 2

    我猜有两种方法:

    • 对UITableViewCell进行子类化并覆盖accessibilityLabel .
    - (NSString *) accessibilityLabel
    {
        NSString* voiceOverString;
        // append section title on voiceOverString and then the elements value
        return voiceOverString;
    }
    
    • Apple docs看到此链接:您可以从cellForRowAtIndexPath设置单元格的AccessibilityLabel . 该示例适用于天气应用程序本身 .
  • 0

    是否有一个简单的API来命名应用程序的各个部分?

    似乎最合适的参考是Apple's Accessibility Programming Guide .

    及其API,Apple's UIAccessibility Documentation .

    设置 shouldGroupAccessibilityChildren 属性似乎是实现目标的最佳方式 . 链接的API将其描述为,

    一个布尔值,指示VoiceOver是否应将作为接收器子节点的元素组合在一起,而不管它们在屏幕上的位置如何 . 在垂直列中项目的父视图上将此属性的值设置为YES会导致VoiceOver尊重应用程序的分组并正确导航它们 .

    Things to keep in mind:

    • Is the target element an accessibility element? (您可以使用 isAccessibilityElement 属性进行检查;标准UIKit控件和视图默认情况下实现UIAccessibility协议)

    • 如果是这样,您只需设置其辅助功能属性即可

    • 如果没有,您需要更改其值, view.isAccessibilityElement = true

    • accessibilityLabel 属性标识元素

    • accessibilityHint 属性描述元素触发的操作

    • 您可以在故事板中设置辅助功能属性

    • 或者,您可以在视图子类的实现中设置辅助功能属性

相关问题