Touch ID 的 VoiceOver 辅助功能标签

Gar*_*ryW 4 objective-c ios voiceover uiaccessibility 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) {
......
Run Code Online (Sandbox Code Playgroud)

带有或不带有可访问性属性的上下文的 VoiceOver 的输出始终是标签文本。

非常感谢所有帮助:)

Bor*_*šek 5

您绝对不应该仅仅为了使 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 上,带有默认美国英语 iOS 语音的 VoiceOver,至少在这个网页上,将“Touch ID”中的“ID”发音为 [ajdi:],而不是 [id]。