Touch ID的VoiceOver辅助function标签

我正在尝试确保我正在使用的iOS应用程序可以访问,并且正在尝试实施VoiceOver以确保这一点。

一个奇怪的事情,我找不到任何帮助是当触摸ID视图显示(在我的情况下login到应用程序)。 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正确地发音(即不要尝试“破解”标签发音),您绝对不能更改辅助function标签。 原因是VoiceOver只有语音输出; 它也具有盲文输出function,盲人用户期望在书写时逐字逐句地阅读事物(即精确地查看所有空格,大小写字母等)。如果您确实要写“ID”而不是“ID “,那么当VoiceOver正确地发音(在特定版本的iOS中)时,盲人用户在阅读盲文显示器上的”ID“之后可能会认为这是它如何被实际书写并出现让我们说非专业的时候他们会用这个错误的拼写与他人进行书面交stream。

处理这个问题的正确方法,尽pipe没有给你一个直接的解决办法,是:

  1. 用苹果公司的文件与特定的语言(例如“预期的发音:[aj'di:]”与“实际发音:[id]”)的特定语音的发音相关的错误
  2. 向苹果提出一个错误,要求只能定制发音的能力(例如,如果要让可访问标签保持完整和正确,还要指定发音的某些部分应该如何发音),以及在哪里可以进行自定义每种语言都由翻译人员单独翻译string(因为错误的发音是特定于语言的) – 也请参阅下一点。
  3. 如果你可以改写,请尝试使用不同的单词而不是有问题的单词(在“触摸ID”是一个术语的情况下似乎不适用)。 但是这也是一种破解,因为只解决了英文原文,而不关心翻译可能会使发音复杂化的翻译。

关于这些坏消息我很遗憾。

最后,在iOS 8.4.1和iOS 9.0.2上,至less在此网页上,具有默认美国英语iOS语音的VoiceOver在“Touch ID”中将“ID”声明为[ajdi:],而不是[id]。

你可以试试这个快速解决方法:只要给我和D之间的空间

  NSString *label = @"Please authenticate your ID using the Touch ID"; label.accessibilityLabel=@"Please authenticate your ID using the Touch ID"; 

另外请注意,您只能设置UIElements的可访问性,并且不能将其设置为常规variables。 为LAContext和NSString设置可访问性标签是没有意义的。

你需要设置可访问性标签为UILabel或你给NSString的元素。