如何控制 SwiftUI 图像的辅助功能旁白文本

问题描述 投票:0回答:4

对于 SwiftUI Image 元素,画外音模板似乎是“辅助功能标签 - 图像 - 图像名称”,例如为

var body: some View {
        Image(systemName: "equal")
            .accessibilityLabel("my label")
    }

我收到画外音响应“我的标签图像相等”。

画外音是否可以说“我的标签”,而不发音“图像相等”部分?

swift swiftui accessibility voiceover
4个回答
3
投票

一旦元素获得焦点,默认特征(链接、按钮、标签等)将在

accessibilityLabel
文本之后播放。这就是它读作 “我的标签 -> 图像”

的原因

要添加或删除默认特征,可以使用以下方法:

  • .accessibilityAddTraits
  • .accessibilityRemoveTraits

示例

将图像识别为按钮:

添加

.isButton
特征并删除
.isImage
特征,现在 VoiceOver 可以将图像的描述读取为 “我的标签 -> 按钮”

struct ContentView: View {
    var body: some View {
        Image(systemName: "equal")
            .accessibilityLabel("my label")
            .accessibilityAddTraits(.isButton)
            .accessibilityRemoveTraits(.isImage)
    }
}

由于一个元素可以有多个特征,请删除您不希望画外音读取的特征。


1
投票

尝试使用标签而不是图像:

Label("My Label", systemImage: "equal")

辅助功能画外音只会读取“平等”标签,而不会提及“图像”。

您可以使用控制屏幕上显示的内容

.labelStyle
修饰符:例如

.labelStyle(.iconOnly)

您会注意到这里没有提到“可访问性”;我们只是使用惯用的 SwiftUI;但它对于可访问性来说与更复杂的答案一样有效。


0
投票

如果您的图片不用作按钮并且仍想完成此用途,

Image(decorative: "equal")

这将阻止 VoiceOver 读取图像名称。您可以根据需要添加或删除其他特征。


0
投票

要让图像仅宣布其辅助功能标签,您可以执行以下操作:

Image("equal").accessibilityLabel(Text("my label")) .accessibilityRemoveTraits(.isImage)

© www.soinside.com 2019 - 2024. All rights reserved.