iOS辅助功能,如何在关闭警报后让焦点回到最后一项

标签 ios accessibility alert voiceover

我有一个按钮,当我点击按钮时,会有一个警报。

当我打开画外音并点击按钮,然后点击警报确定按钮关闭警报时,焦点将返回到页面顶部/后退按钮,而不是触发警报的按钮。

我正在使用这段代码将焦点移回按钮:

let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0 * Double(NSEC_PER_SEC)))

dispatch_after(dispatchTime, dispatch_get_main_queue(), {
  UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, button)
})

问题是在您关闭警报后,焦点会回到顶部并先阅读标签,然后再回到按钮。焦点没有直接转到按钮,这看起来很蹩脚。

我检查了一些 Apple 应用程序,我发现在他们关闭警报后,焦点会回到弹出警报之前的前一个元素。知道如何实现这一目标吗?谢谢!

最佳答案

我今天早些时候遇到了这个问题 - 我解决它的方法是发布 UIAccessibilityScreenChangedNotification 而不是 UIAccessibilityLayoutChangedNotification:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, 按钮)

布局更改是针对当前 View 上下文中布局的更改。当用户遇到上下文更改 时使用屏幕更改,即解除警报并返回到呈现 View Controller 。

您也可以摆脱 dispatch_after block - 使用屏幕更改通知将提供与 Apple 应用程序之一相同的功能。

Here是解释 UIAccessibilityLayoutChangedNotification 和 UIAccessibilityScreenChangedNotification 之间区别的答案的链接。

关于iOS辅助功能,如何在关闭警报后让焦点回到最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925231/

相关文章:

ios - 如何为 UITableViewCell 的 .selectedBackgroundView 设置自定义边距

javascript - 如果特定 div 中发生点击,则发出警报

ios - 从 subview 中分离

ios - UISplitView Controller 修改和人机界面指南

ios - 如何在表格 View 中添加三个表格 View 单元格作为 subview ?

html - 使用 tab 键导航时可以忽略某些网站元素吗?

Android:在不中断当前事件的情况下发送可访问性事件

forms - 创建具有多个描述的可访问复选框组

javascript - 我应该如何使用我的脚本来显示警报?