2015-10-14 41 views
3

VoiceOver的辅助功能的标签,我想确保我的工作对iOS应用的访问,想实现的VoiceOver,以确保这一点。的触摸ID

我找不到任何帮助的一个奇怪的事情是当显示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的输出来自带有或不带有具有可访问性属性的上下文始终是标签文本。

所有帮助非常感谢:)

+0

哪里di dyou设置可访问性标签? –

回答

3

为了使VoiceOver正确发音(即不要尝试“破解”标签发音),您绝对不能更改辅助功能标签。原因是VoiceOver只有语音输出;它也有盲文输出,其中盲人用户期望的那样如果您确实如它们被写入(即清楚地看到所有的空间,资本/小写字母等)来读取事情究竟信的信写“ID”,而不是“ID”,然后在VoiceOver会或许会正确地发音它(在iOS中的特定版本),盲人用户,还写有“ID”盲文显示器上后,可能会认为,这是它实际上是如何写并且出现让我们说非专业的时候,他们会在与其他人的书面交流中使用这个错误的拼写。

正确的方式来处理这个问题,虽然没有给你一个直接的解决办法,就是:

  1. 文件与苹果有关在特定语言的特定声音的特定词的语音上的错误(例如“预期代名词:[aj'di:]“与”实际代名词:[id]“)
  2. 提出苹果要求定制发音能力的错误(例如,如果您要保留可访问性标签完好无损,但是应该如何声明文本的特定部分),以及翻译人员可以根据每种语言单独完成这种定制e字符串(因为错误的发音是特定于语言的) - 也请参阅下一点。
  3. 如果可以改写,尝试不同的字不是一个问题(这似乎并不适用于“触摸ID”,这是一组项的情况下)。但是,这是一个黑客过,因为这只能解决英文原版和不关心的翻译,其中措词可能相反可能更加复杂的发音。

对不起,坏消息。

最后,在这里,无论是在iOS 8.4.1和iOS 9.0。2,带有默认美国英语iOS语音的VoiceOver,至少在此网页上,在“Touch ID”中声明“ID”为[ajdi:],而不是[id]。

+0

感谢鲍里斯。我同意你的观点,这不应该被黑客攻击,并且向苹果公司提出了一个错误报告。 – GarryW

1

你可以四处尝试一下本作快速的工作:只要给我和d之间的空间

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

同时请注意,您只能设置无障碍UI元素和你不能将它设置为一般变量。为LAContext和NSString设置可访问性标签是没有意义的。

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

+0

谢谢Mr.T.这里的问题似乎是LAContext处理向用户呈现Touch ID提示,所以我唯一可以自定义的是_localizedReason_。这是一个NSString,不能是其他任何东西。这就是为什么我试图为其添加辅助功能标签。正如@boris所说,它似乎是发音的一个缺陷,所以我会向苹果公司提出一个错误报告。 – GarryW