iOS VoiceOver/ Доступность произношение иностранных слов

Некоторые тексты, которые я назначаю для accessibilityLabel (s) в моем приложении для iOS, содержат "смешанный язык".

Например, на немецком языке это будет текст "Bier und guter Sound". Слово "Звук", на котором говорят на немецком языке VoiceOver, не имеет смысла (оно должно звучать как "саунд", но звучит как "sund").

Есть ли способ озвучить информацию о языке слова?

1 ответ

Решение

Да, назначьте приписанную строку accessibilityLabel (хотя он имеет тип String, он будет принимать AttributedString) и использовать UIAccessibilitySpeechAttributeLanguage установить информацию о языке для частей строки, которые отличаются от языка пользовательского интерфейса. Например, в вашем случае вы должны установить диапазон (начало =15, длина =5), чтобы иметь UIAccessibilitySpeechAttributeLanguage со значением "en" (или попробуйте "en-US" или "en_US", если это не сработает, сейчас не знаете, какой из них он примет, это должен быть код языка BCP 47 в соответствии с документами).

Если вы используете Swift, то безопасность его типов не позволит вам назначить AttributedString к собственности accessibilityLabel типа StringВы можете обойти это, используя label.setValue(attributedString, forKey: "accessibilityLabel"), Немного взломать (или обойти), но работает.

Другие вопросы по тегам