gpt4 book ai didi

ios - 如何获得可访问性滑动以正确导航 subview 集合?

转载 作者:行者123 更新时间:2023-11-28 22:31:30 25 4
gpt4 key购买 nike

Apple 旨在通过单次滑动手势将 VoiceOver 光标按顺序移动到屏幕项目中,但我的不是,因为用户可以四处移动它们!

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

我的问题是,向右滑动,期望 VoiceOver 读出我在屏幕上看到的项目时,结果顺序不同。它得到了相当多的正确但随后会突然将 VoiceOver 光标从第一个集合移动到第二个集合或改变其方向。移动后,我的代码知道所有 subview 的新顺序,但我希望能够将该信息发送到 VoiceOver。

每个自定义 subview 都是一个 accessibilityElement。有没有一种方法可以让 VoiceOver 按我期望的顺序朗读我的项目?我遇到过 -accessibilityElementAtIndex: 方法,但看不出它是否适合我的情况或如何适合我的情况。

谢谢。

最佳答案

如果您想更改顺序,那么 accessibilityElementAtIndex:UIAccessibilityContainer 协议(protocol)的其余部分就是您要查找的内容。

假设您有一个名为 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 - 如何获得可访问性滑动以正确导航 subview 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com