- (NSInteger)accessibilityElementCount {
return self.subviews.count;
}
- (id)accessibilityElementAtIndex:(NSInteger)index {
// Not that self should have a tag<0 or tag>count otherwise it will
// return itself for that tag instead of the element you want it to.
return [self viewWithTag:index];
}
- (NSInteger)indexOfAccessibilityElement:(id)element {
return ((UIView *)element).tag;
}
2 回答
是的
有一个名为
UIAccessibilityContainer
的协议,由NSObject实现 . 它使您可以使用以下三种方法自定义容器行为:accessibilityElementCount
accessibilityElementAtIndex:
indexOfAccessibilityElement:
如果您有一个主视图,您想要控制辅助功能元素的顺序,您只需实现这三个方法并返回合适的视图/索引 . 还有一件事是容器视图本身不能成为可访问性元素,因此您应该覆盖
isAccessibilityElement:
并返回NO
;示例实现
我建议您按照希望它们出现的顺序拥有所有视图的数组,或者如果不将其用于其他任何内容,则使用
tag
属性 . 协议的实现变得非常简单 .元素数组
我假设你有一个名为
accessibleElements
的数组,它以正确的顺序存储元素 .标记元素
我假设您的子视图从0到子视图的数量不断标记 .
在某些情况下,在一个项目上设置UIAccessibilityTraitSummaryElement可以执行此操作 . (我的游戏似乎过于动态,无法提供帮助 . )