iOS的辅助function,VoiceOver读取订单问题

在此处输入图像描述

当“双指向下轻拂”手势完成时,是否可以更改iPad中可访问性的VoiceOverfunction读取元素的顺序?

对于附加图像,其中包含3个标签和一个按钮,VoiceOver按以下方式读取元素,

标签1 – >标签2 – >按钮 – >标签3

订单可以更改为,

标签1 – >标签2 – >标签3 – >按钮

实现此示例的最快方法是将三个标签放在透明的UIView子类中,以用作标签的容器。 必须正确设置此子类,以便让VoiceOver知道如何解释它。 如果您的部署目标是iOS6那么您可以简单地回答此子类中的“should group accessibility children”问题。

 -(BOOL)shouldGroupAccessibilityChildren{ return YES; } 

对于iOS6以下,它会更复杂,除了你的UIView容器子类只包含UILabels ,它们是可访问性元素。 您可以像这样实现它:

 -(BOOL)isAccessibilityElement{ return NO; } -(NSInteger)accessibilityElementCount{ return self.subviews.count; } -(id)accessibilityElementAtIndex:(NSInteger)index{ return [self.subviews objectAtIndex:index]; } -(NSInteger)indexOfAccessibilityElement:(id)element{ return [self.subviews indexOfObject:element]; } 

我已经测试了这个示例代码,它可以满足您的需求,如果您需要任何说明,请添加评论。 总是很乐意帮助让事情更容易获得。

我尝试将shouldGroupAccessibilityChildren设置为YES但它对我不起作用。

对我有用的是直接设置父视图的可访问性标签(因为我希望在一个go / one VoiceOver手势中读取所有项目)。

 [cell setAccessibilityLabel:[NSString stringWithFormat:@"%@, %@", cityLabel, temperatureLabel]]; 

上面的代码片段来自Apple的文档“ 增强表格单元格的可访问性”

我想你可以在故事板中做到这一点。 VoiceOver顺序由文档大纲中的视图顺序决定。

只需按正确的顺序拖放视图层次结构中的视图即可。

在Swift中,将IBOutlet附加到父UIView,然后将shouldGroupAccessibilityChildren设置为true就足够了。

abc.shouldGroupAccessibilityChildren = true

我注意到如果还设置isAccessibilityElement = true则分组将不会生效。 同样,检查故事板或xib中的辅助function复选框也会阻止分组发生。

Interesting Posts