我有一个按钮,当我点击按钮时,会有一个警告。
当我启用画外音并点击按钮时,点击警告确定按钮以关闭警报,焦点将返回到页面/后退按钮的顶部,而不是触发警报的按钮。
我正在使用这段代码将焦点移回按钮:
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应用程序,我发现在他们解除警报后,焦点将在警报弹出之前返回到上一个元素。知道怎么做到这一点?谢谢!
答案 0 :(得分:1)
我今天早些时候遇到过这个问题 - 我解决问题的方法是发布UIAccessibilityScreenChangedNotification
而不是UIAccessibilityLayoutChangedNotification
:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, button)
布局更改适用于视图当前上下文中布局的更改。屏幕更改可在用户体验上下文更改时使用,即解除警报并返回到呈现视图控制器。
你也可以摆脱dispatch_after
阻止 - 使用屏幕更改通知,而不是你会从Apple的某个应用程序中获得相同的功能。
Here是解释UIAccessibilityLayoutChangedNotification和UIAccessibilityScreenChangedNotification之间差异的答案的链接。