首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS可访问性,如何在解除警报后使焦点返回到最后一项

iOS可访问性,如何在解除警报后使焦点返回到最后一项
EN

Stack Overflow用户
提问于 2016-04-28 20:52:08
回答 1查看 4.3K关注 0票数 9

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

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

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

代码语言:javascript
运行
复制
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应用程序,我发现在他们解除警报后,焦点将返回到前面的元素,然后弹出警报。知道如何做到这一点吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-26 03:38:26

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

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, button)

布局更改是用于更改视图当前上下文中的布局。当用户体验到上下文中的更改时,屏幕更改将被使用,即解除警报并返回到呈现视图控制器。

您也可以去掉dispatch_after块--使用屏幕更改通知将给您提供您从苹果应用程序中描述的相同功能。

Here是一个解释UIAccessibilityLayoutChangedNotification和UIAccessibilityScreenChangedNotification区别的答案的链接。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36925231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档