我有这样的需求。
我的 View Controller 正在从远程休息服务加载数据,数据显示在表格中。在加载过程开始之前,我需要画外音说
“正在加载建筑物。请稍候”
加载数据成功后需要画外音说
“加载的建筑物”
然后我需要在我的 View Controller 中说明标题中的内容
“选择建筑物”。
顺序很重要。现在画外音在加载 Controller 后开始读取 Controller 标题中的内容。当我的建筑物数据加载开始时,“选择建筑物”标题消息被中断并开始“加载建筑物。请稍候”。盲人需要以正确的顺序了解此状态,因此在加载数据后我需要说“选择建筑物”。
我需要控制语音消息的顺序。我需要控制何时说出 controller.title 内容或从画外音中禁用 controller.title。
要通知画外音说些什么,我正在使用这段代码:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Buildings loaded");
最佳答案
UIAccessibilityScreenChangedNotification
有问题。这应该做你想做的。
替代方案如下:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Buildings loaded");
然而,这也被窃听了,耶苹果!获得所需行为的唯一选择是劫持屏幕更改通知,因为它是 iOS 8.2 中唯一没有错误的通知。
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, @"Say these words please");
这在 VoiceOver 中提供了额外的小哔哔声,但这并不可怕。因此,这对您有用,但是,从 A11y 的角度来看,我建议的解决方案如下:
当你加载你的 viewcontroller 时,请稍等对话框出现,将焦点移到它上面。据推测,这实际上是模态的(意味着在完成此操作之前您无法与应用程序的其余部分进行交互)。如果您提供 UIElement,焦点将转移到该元素,而不是提供要宣布的字符串。
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _PleaseWaitLabel);
然后,加载完成后,执行以下操作:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _ChooseABuildingHeading);
完全跳过“建筑物加载”公告,这是没有必要的,只要您等待的公告是模态的,然后您将焦点转移到正确的标题上,就会很明显发生了什么。
关于ios - 加载 View Controller 后的画外音顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537975/