对于 SwiftUI Image 元素,画外音模板似乎是“辅助功能标签 - 图像 - 图像名称”,例如为
var body: some View {
Image(systemName: "equal")
.accessibilityLabel("my label")
}
我收到画外音响应“我的标签图像相等”。
画外音是否可以只说“我的标签”,而不发音“图像相等”部分?
一旦元素获得焦点,默认特征(链接、按钮、标签等)将在
accessibilityLabel
文本之后播放。这就是它读作 “我的标签 -> 图像” 的原因
要添加或删除默认特征,可以使用以下方法:
.accessibilityAddTraits
.accessibilityRemoveTraits
示例
将图像识别为按钮:
添加
.isButton
特征并删除 .isImage
特征,现在 VoiceOver 可以将图像的描述读取为 “我的标签 -> 按钮”
struct ContentView: View {
var body: some View {
Image(systemName: "equal")
.accessibilityLabel("my label")
.accessibilityAddTraits(.isButton)
.accessibilityRemoveTraits(.isImage)
}
}
由于一个元素可以有多个特征,请删除您不希望画外音读取的特征。
尝试使用标签而不是图像:
Label("My Label", systemImage: "equal")
辅助功能画外音只会读取“平等”标签,而不会提及“图像”。
您可以使用控制屏幕上显示的内容
.labelStyle
修饰符:例如
.labelStyle(.iconOnly)
您会注意到这里没有提到“可访问性”;我们只是使用惯用的 SwiftUI;但它对于可访问性来说与更复杂的答案一样有效。
如果您的图片不用作按钮并且仍想完成此用途,
Image(decorative: "equal")
这将阻止 VoiceOver 读取图像名称。您可以根据需要添加或删除其他特征。
要让图像仅宣布其辅助功能标签,您可以执行以下操作:
Image("equal").accessibilityLabel(Text("my label")) .accessibilityRemoveTraits(.isImage)