UIDatepicker VoiceOver неправильная доступностьLabel - PullRequest
0 голосов
/ 03 апреля 2020

Я использую VoiceOver, и у меня проблемы с iOS 13.x, когда текст читается в значениях DatePicker. Кажется, что строка accessibily не изменяется после изменения локали DatePicker. Столбец для месяцев содержит строки из дней США. В нем указывается fünf von dreissig (5 из 30) после выбора апреля, в нем должно быть указано 4 из 12.

На указателе даты я установил datePicker.locale = Locale.init(identifier: "de_DE") и datePicker.calendar = Calendar.init(identifier: Calendar.Identifier.gregorian). Я также пытался установить datePicker.accessibilityLanguage = "de-DE".

Есть идеи?

Video thumbnail
VoiceOver на YouTube

1 Ответ

1 голос
/ 03 апреля 2020

Есть идеи?

Невозможно изменить локаль внутри UIDatePicker для VoiceOver. 100
Язык, который будет учитываться, будет выбран в настройках устройства.

ОБЪЯСНЕНИЕ ?
Элемент UIDatePicker представляет собой оболочку, содержащую множество других элементов, с которыми пользователь VoiceOver может взаимодействовать с (год, месяц и день в вашем случае) .
Таким образом, UIDatePicker сам по себе не доступен, потому что представление и его подпредставления не могут быть доступны обоим полностью .

Правильно написать datePicker.accessibilityLanguage = "de-DE" поскольку UIControl соответствует неофициальному протоколу UIAccessibility , но VoiceOver не будет его анализировать (родительское представление здесь недоступно) .

Представления, определяющие дату единственные из них доступны и интерпретируются VoiceOver как элементы adjustable, но, к сожалению, их невозможно достичь при разработке.
UIDatePicker - это своего рода черный ящик, который позволяет немногим операции, но не позволяет получить доступ к его подпредставлениям, например ... это может быть хорошим началом исследования здесь. 10

РЕШЕНИЕ ?
В вашем случае ничего нельзя настроить с помощью UIDatePicker, но для достижения вашей цели с VoiceOver я рекомендую использовать UIPickerView как на веб-сайте Apple :

Если вы хотите обработать выбор произвольных элементов из списка, используйте объект UIPickerView.

  • Создайте объект UIPickerView с различными колесами.
  • Определите каждый из них с признаком adjustable, чтобы пользователь VoiceOver мог выбрать элемент в списке.
  • Возврат NSAttributedString чтобы добавить атрибут , который будет указывать язык или использовать accessibilityLanguage, как вы это сделали, оба должны быть эффективными.

Это много работы в Сравнение с объектом UIDatePicker под ключ, но я думаю, что вы сможете достичь своей цели, адаптировав язык для VoiceOver в вашем средстве выбора даты в соответствии с этим обоснованием. 10

...