在“allowsDirectInteraction”标记视图中的直接交互当 VoiceOver 处于活动状态时不起作用

问题描述

编辑:刚刚注意到,有时,它有效,有时无效。我不知道为什么。

我正在制作一个主要为盲人设计的应用程序,VoiceOver 可能会处于活动状态。一方面,我需要自己进行交互和手势。在那里,我试图制作一个可直接交互的区域,以便其背后的功能就像没有 Voiceover 活动一样工作,即使它是。但是当我这样做时,VoiceOver 总是会提示:“区域直接交互”或类似的东西(测试设备未设置为英语),而不是双击打印文本。

有人知道可能是什么问题吗?

这是我的观点:

struct MyView: View {
    var body: some View {
        TestView()
            .accessibilityAddTraits(.allowsDirectInteraction)
    }
}

这就是测试视图:

struct TestView: View {
    var body: some View {
        Rectangle()
            .onTapGesture(count: 2) { print("A View was tapped") }
            .onAppear { print("A View was created") }
    }
}

解决方法

当有一个用完所有空间的视图时,它不能像看起来那样作为默认直接交互。用户需要使用转子或设置自己完成此操作:

设置应用/辅助功能/VoiceOver/转子操作/直接触摸应用/

当应用程序被签入该设置时,标有 trait .allowDirectInteraction 的视图确实像 VoiceOver 未激活一样工作,尽管这应该仅用于可自行访问的元素,而不是简单的方法来避免使这些部分可以访问该应用程序!