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