在 SwiftUI 中发布辅助功能通知

use*_*265 12 uiaccessibility swiftui uiaccessibility-notification

我需要将辅助功能焦点移至屏幕上的某个元素。在 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
Run Code Online (Sandbox Code Playgroud)

知道如何将焦点移动到 SwiftUI 屏幕上的某些元素吗?

Fru*_*ion 1

解决方法是:当 UIView 出现时发布通知:

    .onAppear(perform: {
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
            UIAccessibility.post(notification: .screenChanged, argument: "New Screen")
        }
    })
Run Code Online (Sandbox Code Playgroud)

作为参数,放入所需视图的可访问性标签的文本是有意义的。如果用户能够识别屏幕阅读器焦点的白色周围,则受损用户将不知道屏幕阅读器的焦点在哪里。

0.1为了使事情顺利,在使用不同语言进行测试时应该调整延迟。