在SwiftUI中发布可访问性通知

12

我需要将无障碍焦点移动到屏幕上的某个元素。在UIKit中,我们可以简单地执行 UIAccessibility.post(.screenChanged, element)

然而,当我在SwiftUI视图中执行此操作时,应用程序会崩溃,并在控制台中显示以下消息。

This class '__SwiftValue' is not a known serializable element and returning it as an accessibility element may lead to crashes

有什么办法可以在SwiftUI中将焦点移动到屏幕上的某些元素吗?

element 必须是 UIView(引用类型),它不适用于 SwiftUI 视图(值类型)。 - Asperi
4
那么在SwiftUI中如何实现相同的行为? - user1366265
1个回答

1
一种解决方法是:当UIView出现时发布通知:
    .onAppear(perform: {
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
            UIAccessibility.post(notification: .screenChanged, argument: "New Screen")
        }
    })

作为参数,将所需视图的可访问性标签文本放入其中是有意义的。如果用户能够识别屏幕阅读器焦点周围的白色区域,则受损用户将不知道屏幕阅读器正在聚焦哪里。
为了使事情更加顺畅,在测试不同语言时应调整0.1的延迟时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接