当“双指向下滑动”手势完成时,是否可以更改 iPad 中用于辅助功能的 VoiceOver 功能读出元素的顺序?
对于包含 3 个标签和一个按钮的附加图像,VoiceOver 按以下方式读取元素,
标签 1 -> 标签 2 -> 按钮 -> 标签 3
订单可以改成,
标签 1 -> 标签 2 -> 标签 3 -> 按钮
当“双指向下滑动”手势完成时,是否可以更改 iPad 中用于辅助功能的 VoiceOver 功能读出元素的顺序?
对于包含 3 个标签和一个按钮的附加图像,VoiceOver 按以下方式读取元素,
标签 1 -> 标签 2 -> 按钮 -> 标签 3
订单可以改成,
标签 1 -> 标签 2 -> 标签 3 -> 按钮
对于您的示例,实现此目的的最快方法是将三个标签放在一个透明的UIView
子类中,作为标签的容器。必须正确设置此子类以让 VoiceOver 知道如何解释它。如果您的部署目标是,iOS6
那么您可以简单地回答这个子类中的“应该对可访问性子类进行分组”问题。
-(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];
}
我已经测试了这个示例代码,它可以满足您的需求,如果您需要任何说明,请添加评论。总是乐于帮助使事情更容易获得。
I tried setting the shouldGroupAccessibilityChildren
to YES
but it didn't work for me.
What did work for me was setting the accessibility label of the parent view directly (because I wanted all the items to be read in one go/one VoiceOver gesture).
[cell setAccessibilityLabel:[NSString stringWithFormat:@"%@, %@", cityLabel, temperatureLabel]];
The above snippet of codes is from Apple's documentation Enhancing the Accessibility of Table View Cells
在 Swift 中,将 IBOutlet 附加到父 UIView,然后将 shouldGroupAccessibilityChildren 设置为 true 就足够了。
abc.shouldGroupAccessibilityChildren = true
我确实注意到如果还设置isAccessibilityElement = true
分组将不会生效。同样,选中故事板或 xib 中的可访问性复选框也将阻止分组发生。
我认为你可以在故事板中做到这一点。VoiceOver 顺序由文档大纲中视图的顺序决定。
只需以正确的顺序拖放视图层次结构中的视图即可。