Управление голосовой доступностью за считыванием чисел в iOS - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь получить accessibilityValue с десятичным числом на пользовательском UIView для считывания, например, «двадцать первая точка», подобно тому, как голос за кадром считывает значения длительности и ключевого кадра в видео триммер при редактировании видео в приложении «Фото».

При настройке по умолчанию значение считывается как «двадцать точка один». Если вместо этого установить accessibilityAttributedLabel, используя клавишу accessibilitySpeechPunctuation, он будет читаться как «двадцать первый период».

view.accessibilityAttributedLabel = NSAttributedString(string: "20.1", attributes: [.accessibilitySpeechPunctuation: true])

Не прибегая к ручному построению строки нумерации c чтобы прочитать, кто-нибудь знает, как получить число для чтения, говоря «точка» вместо «точка» или «точка»?

1 Ответ

1 голос
/ 03 мая 2020

Понял! Форматирование числа с использованием NumberFormatter в стиле .spellOut сгенерирует строку с полностью прописанным значением. Не то, что мы хотим для текста метки, а именно то, что мы хотим для метки доступности.

let formatter = NumberFormatter()
formatter.numberStyle = .spellOut

let label = UILabel()
label.text = formatter.string(from: 20.1)
label.accessibilityLabel = formatter.string(from: 20.1)

// prints out "twenty point one"
print(label.accessibilityLabel)
...