Ios 触摸ID的画外音辅助标签
我正在努力确保我正在使用的iOS应用程序是可访问的,并且正在尝试实施VoiceOver以确保这一点 我找不到任何帮助的一件奇怪的事情是,当触摸ID视图显示时(在我登录应用程序的情况下)。画外音把ID作为一个词来发音,而不是ID 我已经尝试实现NSString和LAContext对象的可访问性属性,但这两个属性似乎都没有改变VoiceOver读取的内容。下面是代码片段:Ios 触摸ID的画外音辅助标签,ios,objective-c,voiceover,uiaccessibility,touch-id,Ios,Objective C,Voiceover,Uiaccessibility,Touch Id,我正在努力确保我正在使用的iOS应用程序是可访问的,并且正在尝试实施VoiceOver以确保这一点 我找不到任何帮助的一件奇怪的事情是,当触摸ID视图显示时(在我登录应用程序的情况下)。画外音把ID作为一个词来发音,而不是ID 我已经尝试实现NSString和LAContext对象的可访问性属性,但这两个属性似乎都没有改变VoiceOver读取的内容。下面是代码片段: LAContext *context = [[LAContext alloc] init]; [context setIsAcc
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的输出(无论上下文是否具有可访问性属性)始终是标签文本
非常感谢所有帮助:)您可以尝试以下快速解决方法:只需在I和D之间留出空间
NSString *label = @"Please authenticate your ID using the Touch ID";
label.accessibilityLabel=@"Please authenticate your I D using the Touch I D";
另外请注意,您只能将可访问性设置为UIElements,而不能将其设置为常规变量。为LAContext和NSString设置可访问性标签是没有意义的
您需要将辅助功能标签设置为UILabel或您将NSString指定给的元素。您绝对不应该仅仅为了使画外音发音正确而更改辅助功能标签(即,不要尝试“破解”标签发音)。原因是画外音并不仅仅有语音输出;它还具有盲文输出,盲人用户希望在书写时准确地逐字阅读(即准确地看到所有空格、大写字母/小写字母等),如果您确实这样做了,例如写了“ID”而不是“ID”,那么VoiceOver可能会正确地发音(在特定版本的iOS中),盲人用户在阅读“ID”之后在布莱叶盲文展示上,他们可能会认为这就是它的实际书写方式,比如说,在与其他人的书面交流中,他们会使用这种错误的拼写 正确的解决方法是(尽管没有立即给出解决方案):
最后,在iOS 8.4.1和iOS 9.0.2上,至少在本网页上,带有默认美式英语iOS语音的VoiceOver在“Touch ID”中的“ID”发音为[ajdi:],而不是[ID]。从iOS 11开始,您可以设置元素并使用
UIAccessibilitySpeechatDistributePanotion
键(Swift:NSAttributedString.Key.accessibilityspeechipanotion
)指定属性字符串范围的发音
请参阅其他可用于调整VoiceOver如何读取文本的工具。谢谢T先生。这里的问题似乎是LAContext处理向用户显示触摸ID提示的问题,因此我唯一可以自定义的是localizedReason。这是一个NSString,不能是任何其他内容。这就是我尝试添加accessibili的原因正如@boris所说,这似乎是发音上的一个缺陷,所以我将向苹果公司提交一份错误报告。