iOS voiceOver/accessibility 外来词发音
iOS voiceOver/accessibility foreign words pronuncation
我在 iOS 应用中分配给 accessibilityLabel 的一些文本包含 "mixed language"。
例如,在德语中,文本为 "Bier und guter Sound"。用德语 VoiceOver 语言说的单词 "Sound" 没有意义(它应该说 "saund",但听起来像 "sund")。
有没有办法通过语音来表达有关单词语言的信息?
是的,为 accessibilityLabel
分配一个属性字符串(即使它是 String 类型,它也会接受 AttributedString),并使用 UIAccessibilitySpeechAttributeLanguage
为字符串的部分设置语言信息不同于 UI 语言。例如。在您的情况下,您可以将范围 (start=15, length=5) 设置为 UIAccessibilitySpeechAttributeLanguage
和值 "en" (或者尝试 "en-US" 或 "en_US" 如果这不起作用,现在不确定它会接受哪一个,根据文档应该是 BCP 47 语言代码)。
如果您正在使用 Swift,那么它的类型安全将不允许您将 AttributedString
分配给类型 String
的 属性 accessibilityLabel
,您可以使用 label.setValue(attributedString, forKey: "accessibilityLabel")
解决此问题。有点 hack(或解决方法),但有效。
我在 iOS 应用中分配给 accessibilityLabel 的一些文本包含 "mixed language"。
例如,在德语中,文本为 "Bier und guter Sound"。用德语 VoiceOver 语言说的单词 "Sound" 没有意义(它应该说 "saund",但听起来像 "sund")。
有没有办法通过语音来表达有关单词语言的信息?
是的,为 accessibilityLabel
分配一个属性字符串(即使它是 String 类型,它也会接受 AttributedString),并使用 UIAccessibilitySpeechAttributeLanguage
为字符串的部分设置语言信息不同于 UI 语言。例如。在您的情况下,您可以将范围 (start=15, length=5) 设置为 UIAccessibilitySpeechAttributeLanguage
和值 "en" (或者尝试 "en-US" 或 "en_US" 如果这不起作用,现在不确定它会接受哪一个,根据文档应该是 BCP 47 语言代码)。
如果您正在使用 Swift,那么它的类型安全将不允许您将 AttributedString
分配给类型 String
的 属性 accessibilityLabel
,您可以使用 label.setValue(attributedString, forKey: "accessibilityLabel")
解决此问题。有点 hack(或解决方法),但有效。