ios SwiftUI -如何使父视图和子视图都可以访问画外音

1l5u6lss  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(98)

我希望可访问性的方式,首先父视图是通过语音阅读,然后子视图是单独阅读。尝试以下代码,但它并不像预期的那样工作。它只是单独读取子视图,而不是父视图。也尝试了.combine,但它只是读取父视图。例如:

public var body: some View {
    VStack {
        Image("apple")
        Text("Text 1")
            .accessibilityLabel("Text 1")
        Text("Text 2")
            .accessibilityLabel("Text 2")
    }
    .accessibilityElement(children: .contain)
    .accessibilityLabel("Container view")
}

字符串

1wnzp6jl

1wnzp6jl1#

.contain的功能如下所述。(您可以执行“单击”并单击以查看Xcode中的说明。)

  • 任何子辅助功能元素都将成为新辅助功能元素的子元素。*

因此,.contain将首先宣布Container view的可访问性标签,并将宣布每次的子项。因此您将有这样的公告:
Container View, ImageContainer View, Text 1Container View, Text 2
所以,为了实现你的意图,你可以先删除.accessibilityElement(children: .contain),因为你不需要合并或添加一个共同的公告给孩子。
您可以简单地将标签添加到第一个项目,如下所示。

var body: some View {
    VStack {
        Image(systemName: "apple.logo")
            .accessibilityLabel("Container view")
        Text("Text 1")
            .accessibilityLabel("Text 1")
        Text("Text 2")
            .accessibilityLabel("Text 2")
    }
}

字符串
此外,更好的做法可能是使用Group{ }容器来定义可访问性声明。

相关问题