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

时间:2012-10-30 04:49:11

标签: ios ipad accessibility uiaccessibility

enter image description here

当“双指向下轻拂”手势完成时,是否可以更改iPad中辅助功能的VoiceOver功能读取元素的顺序?

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

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

订单可以更改为,

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

4 个答案:

答案 0 :(得分:14)

为您的示例实现此目的的最快方法是将三个标签放在透明的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];
}

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

答案 1 :(得分:4)

我尝试将shouldGroupAccessibilityChildren设置为YES,但它对我没用。

为我工作的是直接设置父视图的辅助功能标签(因为我希望在一个/一个VoiceOver手势中读取所有项目。)

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

以上代码段来自Apple的文档Enhancing the Accessibility of Table View Cells

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

  

abc.shouldGroupAccessibilityChildren = true

我注意到如果同时设置isAccessibilityElement = true,分组也不会生效。同样,检查storyboard或xib中的辅助功能复选框也会阻止分组的发生。