VoiceOver произношение: "Live" "ADD"

Я пытаюсь реализовать доступность для приложения iOS и сталкивался с некоторыми нюансами и причудами.

Например: У меня есть ярлык в моем приложении, который гласит: "Это живое событие". Определение живого в этом контексте - это "то, что в настоящее время происходит", а когда произносится, оно должно рифмоваться с "пятеркой".

Тем не менее, голос за кадром понимает и читает слово "живое", как в "жить и умереть", и неправильно произносит слово "Дай".

Аналогично, другая проблема, с которой я сталкиваюсь, - это слово "ADD" в контексте "ДОБАВИТЬ ВЫБОР". Смысл слова в его контексте - "добавить что-то в корзину", но произносится как "A.D.D. (синдром дефицита внимания)"

Есть ли программный способ дать контекст словам, когда вы включите приложение для доступности?

Ответ 1

Решение - по крайней мере, для iOS 9.1 и новее - изменение заглавной буквы также изменяет произношение:

  • Живые рифмы с пятью
  • живые рифмы с дайте

Ответ 2

Я боролся с этим некоторое время, но я нашел простое решение... Если вы добавите еще одну букву "L" в строку "Live", она произнесет live в виде пяти.

Попробуйте это → "Llive"

Ответ 3

Вместо того, чтобы использовать подсказки и трюки с заглавными или двойными буквами, которые в настоящее время работают, но могут устареть в будущей версии iOS, я предлагаю использовать клавишу accessibilitySpeechIPANotation внутри приписанной строки, чтобы определить соответствующую фонетический звук (доступен с iOS11): этот метод проверен и будет работать в течение времени.

Фонемы могут создаваться благодаря настройкам вашего мобильного устройства:

  • iOS 13: Accessibility - VoiceOver - Speech - Pronunciations.
  • iOS 12: General - Accessibility - Speech - Pronunciations.

Ответ 4

Это два способа обойти ошибку в программе чтения с экрана:

  • игнорируя его: это ошибка в программе чтения с экрана, а не в вашем коде

  • используя другое предложение.

Например, вы можете сказать "это событие живое" (если оно работает лучше, в чем я сомневаюсь), или "это событие в эфире" (в зависимости от контекста, конечно, но вы могли бы найти лучшую альтернативу).

Вы можете подумать об использовании aria-label (для веб-приложений или его эквивалента accessibilityLabel в собственном приложении), чтобы предоставить звуковую альтернативу, например, "это живое событие" (потому что живые рифмы с пятью) для программ чтения с экрана, но aria-label также используется брайлевским дисплеем, и тогда это будет довольно плохой идеей.

Как кто-то сказал в комментариях выше, пользователи программы чтения с экрана прекрасно знают, как их программа чтения с экрана плохо произносит некоторые слова.

ОБНОВЛЕНИЕ: см. @Bugs answer для решения нативных приложений для iOS (> = iOS11)

Ответ 5

Вы можете установить accessibilityLabel, чтобы метка произносила текст так, как вы хотите.

Для примера OP:

label1.accessibilityLabel = @"This is a liv event." //notice live is spelled liv so it is pronounced for the correct context
label2.accessibilityLabel = @"add a selection"

Это также можно сделать через раскадровку/ниб, выбирая ярлык и просматривая "инспектор идентификации"

Снимок экрана проверки идентификатора