2016-12-03 304 views
2

我在iOS應用程序中分配給accessibilityLabel的一些文本包含「混合語言」。iOS voiceOver /輔助功能外語單詞

例如,在德語中,文本將是「Bier und guter Sound」。用德語VoiceOver語言說的「聲音」這個詞是沒有意義的(它應該說是「倒胃口」,但聽起來像「倒數」)。

有沒有辦法讓一個單詞的語言信息發聲?

回答

5

是的,給accessibilityLabel分配一個屬性字符串(即使它是String類型,它會接受AttributedString),並使用UIAccessibilitySpeechAttributeLanguage來設置字符串中與UI語言不同的部分的語言信息。例如。在你的情況下,你可以設置範圍(start = 15,length = 5)使UIAccessibilitySpeechAttributeLanguage的值爲「en」(或者嘗試「en-US」或者「en_US」,如果這不起作用,現在不確定哪一個將接受,它應該是根據文檔的BCP 47語言代碼)。

如果使用的是斯威夫特,那麼它的類型安全不會讓你使用label.setValue(attributedString, forKey: "accessibilityLabel")分配一個AttributedStringString類型的財產accessibilityLabel,則可以解決這個問題。有點破解(或解決方法),但工作。

+0

有趣的是,這部分工作。 – kampfgnu

+0

我的設備通用語言設置爲英語。使用您的建議來提示系統中英文文本中包含的德語單詞是正確的。使用應用內轉子設置輔助功能語言爲德語,並暗示德語文本內的英文單詞不......看起來像是iOS中被遺忘的功能......儘管如此,謝謝! – kampfgnu

+0

忘掉我以前的評論,問題解決了。但我應該補充說,在某處調用'[[UIApplication sharedApplication] setAccessibilityLanguage:@「de」]'很重要。 – kampfgnu