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