При каких условиях VoiceOver автоматически переключает язык в приложении для iOS - PullRequest
0 голосов
/ 05 февраля 2019

Мой телефон настроен на системный язык en_us, и я добавил шведский и французский языки ротора VoiceOver.

После добавления языков обнаруживается, что комбинация VoiceOver / Safari автоматически запускается на соответствующем языке при просмотре веб-страниц, где документ содержит языковые настройки.

После изучения различных неанглийских приложений AppStoreкоторый я установил, один из них вызывает автоматическое изменение языка в программе чтения с экрана, когда я его открываю.

Я экспериментировал с настройками языка и локализации в очень простом приложении для iOS, чтобы посмотреть, смогу ли я активировать такой переключатель.Приложение содержит один контроллер представления с UILabel, созданный в редакторе раскадровки.

Я попытался изменить значение «Регион локального развития локализации» в Info.plist.Шведский язык недоступен в раскрывающемся списке в графическом редакторе, поэтому я изменил его на «Открыть как исходный код».Это просто читает шведскую этикетку, как если бы это был текст на английском языке, то есть нет никакой разницы от того, чтобы ничего не делать.

Затем я попытался решение ahbou редактирования файла project.pbxproj, заменив ссылки на "en" на "sv".Я перераспределил и с этим изменением, но это не имеет значения.

Я экспериментировал с добавлением второй неанглийской локали, а также с установкой и снятием флажка «Использовать базовую локализацию», но это не делаетРазницы тоже нет.

Несмотря на все ошибки, все началось очень быстро на шведском языке, но после поворота ротора я так и не смог снова вызвать изменение.

Мне пришло в голову, что может быть разница между развертыванием из Xcode и развертыванием IPA, поэтому я попробовал это, не повезло.

Я попытался выяснить, могу ли я вызвать изменение языка VoiceOverв неминимальном приложении, которое не опирается на раскадровки и локализовано на английский и шведский.Если я редактирую схему перед развертыванием через XCode, установка «Язык приложения» на шведский язык и «Область приложения» на Швецию приводит к тому, что VoiceOver запускается на шведском языке для приложения, но только настройка языка приложения - нет.

Глядя на мое приложение AppStore, которое запускает шведскую речь, создается впечатление, что приложение может отображать веб-контент в веб-представлении.Даже если это так, тот факт, что он работает, предполагает, что в стандартном приложении iOS должен быть какой-то способ инициировать автоматический переход.

Благодарен за любые идеи!

---- Отредактировано среда, 6 февраля 2019 г. ----

Я экспериментировал с настройкой accessibilityLanguage согласно полезному совету Матса.Установка языка в UIApplication действительно распространяет его на все элементы приложения.Я изменил делегат приложения следующим образом:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        application.accessibilityLanguage = "sv"
        return true
    }

Обратите внимание, что значение isAccessibilityElement по умолчанию ложно для UIApplication (в отличие от компонентов, которые пользователи обычно ожидают видеть или взаимодействовать с ними).Нет необходимости менять его на true, чтобы применить настройку языка, и я не уверен, какой будет ценность его изменения, поскольку пользователи не взаимодействуют с приложением напрямую.Я попытался установить его в значение true, что, по-видимому, не имеет никакого значения для VoiceOver.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете изменить язык VoiceOver с помощью свойства accessibilityLanguage для любого элемента доступности.Это задокументировано в дополнениях UIAccessibility к NSObject.

. Я думаю, что это также влияет на все подэлементы, поэтому вам нужно всего лишь установить его для окна приложения.

...