Ios 如何获得辅助功能滑动以正确导航子视图集合?

Ios 如何获得辅助功能滑动以正确导航子视图集合?,ios,voiceover,uiaccessibility,Ios,Voiceover,Uiaccessibility,苹果公司打算用一个滑动手势将画外音光标按顺序移动到屏幕上的各个项目中,但我的没有,因为用户可以移动它们 我的主视图有一组按钮和标签,但是它也有两个自定义子视图集合,让我们以从左到右的“升序”调用实例SVA1到SVA9和SVB1到SVB9。也就是说,SVA是一个自定义UIView类,SVB是第二个。当我拖动,比如说,SVA3到SVA6的当前位置时,我得到的顺序是SVA1、SVA2、SVA4、SVA5、SVA3、SVA6、SVA7、SVA8和SVA9。集合是“链接”的,因此,现在同样的顺序也将通过“

苹果公司打算用一个滑动手势将画外音光标按顺序移动到屏幕上的各个项目中,但我的没有,因为用户可以移动它们

我的主视图有一组按钮和标签,但是它也有两个自定义子视图集合,让我们以从左到右的“升序”调用实例SVA1到SVA9和SVB1到SVB9。也就是说,SVA是一个自定义UIView类,SVB是第二个。当我拖动,比如说,SVA3到SVA6的当前位置时,我得到的顺序是SVA1、SVA2、SVA4、SVA5、SVA3、SVA6、SVA7、SVA8和SVA9。集合是“链接”的,因此,现在同样的顺序也将通过“我的代码”镜像到SVB子视图集合中

我的问题是,向右滑动,当我在屏幕上看到我的项目时,希望画外音能读出它们,结果会出现不同的顺序。它会将很多画外音光标从第一组移到第二组,或者改变方向。移动后,我的代码知道所有子视图的新顺序,但我希望能够将该信息发送到VoiceOver

每个自定义子视图都是一个accessibilityElement。有没有办法让画外音按照我期望的顺序读回我的作品?我遇到了-AccessibilityElementIndex:方法,但不知道它是否适合我的情况


谢谢。

如果您想更改顺序,则
可访问性修订索引:
以及
UIAccessibilityContainer
协议的其余部分就是您需要的

假设您有一个名为
accessibleElements
的数组,该数组按您希望的顺序存储元素

- (NSInteger)accessibilityElementCount {
    return self.accessibleElements.count;
}

- (id)accessibilityElementAtIndex:(NSInteger)index {
    return self.accessibleElements[index]; 
}

- (NSInteger)indexOfAccessibilityElement:(id)element {
    return [self.accessibleElements indexOfObject:element];
}
容器本身不能是可访问性元素,因此还应重写
isAccessibilityElement

- (BOOL)isAccessibilityElement {
    return NO;
}

从iOS 8开始,您可以直接设置对象的
accessibilityElements
,而无需覆盖
accessibility{ElementCount | ElementAtIndex:| IndexOfElement:}