我正在努力确保我正在开发的 iOS 应用程序可以访问,并正在尝试实现 VoiceOver 来确保这一点。
我找不到任何帮助的一件奇怪的事情是何时显示 Touch ID 视图(在我的情况下是登录应用程序)。 VoiceOver 将 ID 发音为单词,而不是 I.D。
我尝试过对 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 不仅仅有语音输出;它还有盲文输出,盲人用户希望能够准确地逐个字母地阅读内容(即准确地看到所有空格、大写/小写字母等)。写“I D”而不是“ID”,那么虽然 VoiceOver 可能会正确发音(在特定版本的 iOS 中),但盲人用户在盲文显示器上阅读“I D”后可能会认为这就是它的实际书写方式比如说,当他们在与其他人的书面交流中使用这种错误的拼写时,他们就会显得不专业。
处理这个问题的正确方法(尽管没有立即提供解决方案)是:
- 向 Apple 提交有关特定语言中特定单词和特定语音的发音错误(例如“预期发音:[aj'di:]”与“实际发音:[id]”)
- 向 Apple 提交错误,请求仅自定义发音的能力(即,您将辅助功能标签保持完整且正确,但指定语音应如何发音文本的某些部分),以及可以在何处进行此自定义翻译者单独翻译字符串的每种语言(因为错误的发音是特定于语言的) - 另请参阅下一点。
- 如果您可以改写,请尝试使用与有问题的词不同的词(这似乎不适用于“Touch ID”这一固定术语)。但这也是一种黑客行为,因为它只解决了英文原文,并不关心翻译,而改写反而可能使发音复杂化。
关于这些坏消息我很遗憾。
最后,在这里,无论是在 iOS 8.4.1 还是 iOS 9.0.2 上,使用默认美国英语 iOS 语音的 VoiceOver,至少在此网页上,将“Touch ID”中的“ID”发音为 [ajdi:],而不是 [id]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)