Значок доступности VoiceOver для Touch ID

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

Одна странная вещь, о которой я не могу найти, – это когда отображается экран Touch ID (в моем случае для входа в приложение). VoiceOver объявляет ID как слово, а не ID

Я попытался реализовать атрибуты доступности как для NSString, так и для объекта LAContext, но ни один из них не изменил то, что читается VoiceOver. Ниже приведены фрагменты кода:

LAContext *context = [[LAContext alloc] init]; [context setIsAccessibilityElement:YES]; [context setAccessibilityLabel:@"TEST 2"]; NSError *error = nil; NSString *label = @"Please authenticate your ID using the Touch ID"; [label setIsAccessibilityElement:YES]; [label setAccessibilityTraits:UIAccessibilityTraitStaticText]; [label setAccessibilityLabel:@"TEST"]; showingTouchID = TRUE; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:label reply:^(BOOL success, NSError *error) { ...... 

Выход из VoiceOver с или без контекста, имеющего атрибуты доступности, всегда является текстом метки.

Вся помощь сильно оценили 🙂

Вы определенно не должны менять метку доступности, чтобы VoiceOver правильно произносил вещи (т. Е. Не пытайтесь «взломать» произнесение метки). Причина в том, что VoiceOver не имеет только речевого выхода; он также имеет выход на брайлевский язык, где слепые пользователи ожидают, что они будут читать вещи буквально по мере их написания (т. е. увидеть точно все пробелы, капитальные / мелкие буквы и т. д.). Если вы действительно написали «ID» вместо «ID », тогда, когда VoiceOver произнесет это, возможно, правильно (в конкретной версии iOS), слепые пользователи, после чтения« ID »на дисплее Брайля, могут подумать, что именно так оно и написано и появляется, скажем, непрофессионально, когда они затем использовали бы это неправильное написание в письменных обменах с другими людьми.

Правильный способ справиться с этим, хотя и не дает вам немедленного решения, заключается в следующем:

  1. Изложите ошибку с Apple о произнесении конкретного слова с определенным голосом на конкретном языке (например, «Ожидаемое произношение: [aj'di:]» против «Фактическое произношение: [id]»)
  2. Создайте ошибку с Apple, чтобы запросить возможность настраивать произношение (т. Е. Где вы оставите ярлык доступности неповрежденным и правильным, но укажите голосу, как он должен произносить определенную часть текста), и где эта настройка может быть выполнена для каждый язык индивидуально переводчиком, переводящим строки (потому что неправильное произношение зависит от языка) – также см. следующую точку.
  3. Если вы можете переделать, попробуйте другое слово, чем проблематичное (что кажется неприменимым в случае «Touch ID», который является установленным термином). Но это тоже хак, так как это решает только английский оригинал и не заботится о переводах, где переписывание может, наоборот, затруднить произношение.

Извините за плохие новости.

Наконец, здесь, как на iOS 8.4.1, так и на iOS 9.0.2, VoiceOver со стандартным английским голосом iOS по умолчанию, по крайней мере на этой веб-странице, произносит «ID» в «Touch ID» как [ajdi:], а не [id].

Вы можете попробовать это для быстрой работы: просто дайте пространство между I и D

  NSString *label = @"Please authenticate your ID using the Touch ID"; [email protected]"Please authenticate your ID using the Touch ID"; 

Также обратите внимание, что вы можете установить доступность только для UIElements, и вы не можете установить ее в общие переменные. Не имеет смысла устанавливать метку доступности для LAContext и NSString.

Вам нужно установить метку доступности в UILabel или элемент, которому вы даете NSString.

  • Статус голосового управления iOS
  • Как использовать жестов tap в Accessibility in swift?
  • Голосование не фокусируется на UILabel, когда отображается представление
  • Возврат в главное меню при длинном нажатии кнопки «Доступ к коммутатору»
  • Как сделать значок закладки UISearchBar доступным?
  • Могу ли я влиять на то, что появляется в роторе VoiceOver?
  • Скрыть UITableViewCell от VoiceOver
  • Динамическое обновление контента в UITableView, доступном для VoiceOver
  • Проверьте, доступна ли функция в Swift?
  • Переопределение сообщения VoiceOver в UITextField - iOS Accessibilty
  • Фактическая разница между UIAccessibilityLayoutChangedNotification и UIAccessibilityScreenChangedNotification?
  • Давайте будем гением компьютера.