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