首页 文章

iOS辅助功能,如何在关闭警报后重点关注最后一项

提问于
浏览
5

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

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

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

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应用程序,我发现在它们解除警报后,焦点将在警报弹出之前返回到上一个元素 . 知道怎么做到这一点?谢谢!

1 回答

  • 1

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

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, button)

    布局更改适用于视图当前上下文中 layout 的更改 . 屏幕更改用于用户体验 change in context 时,即解除警报并返回到呈现视图控制器 .

    您也可以删除 dispatch_after 块 - 使用屏幕更改通知将为您提供您从Apple的某个应用程序中描述的相同功能 .

    Here是解释UIAccessibilityLayoutChangedNotification和UIAccessibilityScreenChangedNotification之间差异的答案的链接 .

相关问题