2016-12-03 7 views
2

Некоторые из текстов, которые я назначаю для доступаLabel (s) в моем приложении iOS, содержат «смешанный язык».iOS voiceOver/accessibility иностранные слова произношения

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

Есть ли способ дать голос над информацией о языке слова?

ответ

5

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

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

+0

интересно, это работает частично. – kampfgnu

+0

мой общий язык устройств установлен на английский. используя ваше предложение, чтобы намекнуть, что система для немецкого слова, содержащегося в английском тексте, произносится правильно. используя ротор в приложении, чтобы установить язык доступности для немецкого языка и намекнуть английское слово внутри немецкого текста, не ... выглядит как забытая функция в iOS ... спасибо, хотя! – kampfgnu

+0

забыть о моем предыдущем комментарии, проблема решена. но я должен добавить, что важно вызвать '[[UIApplication sharedApplication] setAccessibilityLanguage: @" de "]' где-то. – kampfgnu

Смежные вопросы