我有一个按钮,当我点击按钮,会有一个警报。
当我打开画外音并点击按钮,然后点击警报OK按钮以解除警报时,焦点将返回到页面/后退按钮的顶部,而不是触发警报的按钮。
我使用这段代码将焦点移回按钮:
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应用程序,我发现在他们解除警报后,焦点将返回到前面的元素,然后弹出警报。知道如何做到这一点吗?谢谢!
发布于 2016-05-26 03:38:26
今天早些时候我遇到了这个问题--我解决这个问题的方法是发布一个UIAccessibilityScreenChangedNotification
而不是一个UIAccessibilityLayoutChangedNotification
。
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, button)
布局更改是用于更改视图当前上下文中的布局。当用户体验到上下文中的更改时,屏幕更改将被使用,即解除警报并返回到呈现视图控制器。
您也可以去掉dispatch_after
块--使用屏幕更改通知将给您提供您从苹果应用程序中描述的相同功能。
Here是一个解释UIAccessibilityLayoutChangedNotification和UIAccessibilityScreenChangedNotification区别的答案的链接。
https://stackoverflow.com/questions/36925231
复制相似问题