在将焦点转移到某个元素之前,如何等待公告完成?

Posted

技术标签:

【中文标题】在将焦点转移到某个元素之前,如何等待公告完成?【英文标题】:How can I wait for announcement to complete before moving focus to some element? 【发布时间】:2021-08-24 06:28:00 【问题描述】:

我有一个场景,我想在将焦点转移到一些不同的元素之前发布一个公告。当我尝试这样做时-

UIAccessibility.post(notification: .announcement, argument: "a very very very long text")

UIAccessibility.post(notification: .layoutChanged, argument: headerResult)

对于上面的代码,我的焦点在没有完成公告的情况下转移到了 headerResult。 我想保持两个通知彼此独立。 谢谢

【问题讨论】:

【参考方案1】:

您可以收听announcementDidFinish 通知(请参阅documentation)并检查用户字典以将announcementStringValueUserInfoKey 键的值与您的“非常非常...”字符串进行比较,这样您就知道哪个公告完成了.但请注意,如果焦点在没有他们互动的情况下移动(尤其是在长文本公告之后发生),这对视障人士来说是非常混乱的。您应该检查announcementWasSuccessfulUserInfoKey 的值,以仅在成功阅读公告直到结束时才移动焦点。

【讨论】:

以上是关于在将焦点转移到某个元素之前,如何等待公告完成?的主要内容,如果未能解决你的问题,请参考以下文章

如何从jQuery中的输入字段中删除焦点?

Flux 不会在“then”之前等待元素完成

将辅助功能画外音光标焦点移动到特定元素

如何在运行某些代码之前等待 flash (as2) 加载子元素?

UIAccessibility - 当关闭另一个视图时,将焦点设置到上一个辅助功能元素

是否有可能强制Ios浏览器从输入焦点到另一个元素?