我正在使我的 iOS 应用程序可访问,我快完成了。我的应用程序包含几个自定义屏幕转换,当 VoiceOver 开启时,它似乎会选择最左上角的元素来描述转换后的内容,或者偶尔选择一个随机元素。UIAccessibilityTraitSummaryElement
看起来很有希望,但据我了解,它仅在应用程序启动时有效,而不是在任意转换之后。
似乎没有可访问性特征或属性来指定元素获得 VoiceOver 焦点的首选顺序。有没有办法强制 VoiceOver 聚焦?
我正在使我的 iOS 应用程序可访问,我快完成了。我的应用程序包含几个自定义屏幕转换,当 VoiceOver 开启时,它似乎会选择最左上角的元素来描述转换后的内容,或者偶尔选择一个随机元素。UIAccessibilityTraitSummaryElement
看起来很有希望,但据我了解,它仅在应用程序启动时有效,而不是在任意转换之后。
似乎没有可访问性特征或属性来指定元素获得 VoiceOver 焦点的首选顺序。有没有办法强制 VoiceOver 聚焦?
编辑: iOS 6 现在可用,正如 kevboh 所述,您现在可以在发布UIAccessibilityLayoutChangedNotification
or时传递参数UIAccessibilityScreenChangedNotification
:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, myAccessibilityElement);
myAccessibilityElement
在大多数情况下,将是一个 UIView,其中 isAccessibilityElement 设置为 YES(许多视图的默认设置)。
或者,您可以将 iOS6 中添加的新特征添加UIAccessibilityTraitHeader
到您的辅助功能元素中accessibilityTraits
,这应该具有相同的结果(尽管我还没有对此进行测试)。
原文: iOS 6 中的新 API 无法在此处讨论,因为它仍处于 NDA 之下,但可以在 WWDC 2012 (Session 210) 的“iOS 可访问性”视频中找到。
但是,如果做不到这一点,解决方法可能是手动触发公告以覆盖默认的重点可访问性标签公告:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Your text");
由于这个可访问性建议站点,提供了强制 VoiceOver 焦点和重新排序元素的有趣解释。
通知内容更改
当当前页面内容发生变化时,可以使用多种通知来通知无障碍 API。为此,我们必须使用UIAccessibilityPostNotification方法将更改通知发送到可访问性 API 。
有几种类型的更改通知,但最常用的两种是:
阅读顺序
使用UIAccessibilityContainer协议重新定义 VoiceOver 阅读顺序。这个想法是有一个元素表来定义元素的阅读顺序。使用shouldGroupAccessibilityElement属性通常非常有用,因此我们有一个精确的顺序,但仅适用于部分视图(视图的其余部分将使用 VoiceOver 提供的本机顺序读取)。
说明此功能的最佳方式是键盘,其键顺序不一定是适当的。这是所需的顺序:1、2、3、4、7、6、8、9、5。创建了两个视图(蓝色和灰色),我们以图形方式将数字放入其中,如下所述:
插图和代码片段(Swift 和 ObjC)也可用于定义这 2 个解释。