UIAccessibility - 容器

Fil*_*sik 6 objective-c ios uiaccessibility

画外音中有一个“容器”转子设置 - 它允许您快速浏览屏幕的“高级”部分(向上和向下滑动)。例如,在日历中,您有 3 个项目 - 导航栏、内容、工具栏。

我的应用程序使用自定义 UIView 子类,无论我尝试做什么 - 我的所有视图似乎都属于一个容器 - 所以我无法将它们拆分为逻辑部分。我尝试将它们放在实现 UIAccessibilityContainer 协议的单独视图中,并在这些父视图上设置一些可访问性属性。

有谁知道如何创建多个容器?

Atl*_*-ed 5

我对这个问题进行了一些挖掘,并认为这是 Apple 正在使用的一个私人特征。首先,我注意到唯一识别的容器是标准的 UIKit 类型对象,如 UITableViews、UITabBars、UINavigationBars 等。所以接下来我使用调试器来检查这些组件的可访问性特征的值。它们都是 0x200000000000。为了确保我没有错过 UIAccessibilityTrait,我检查了它们的所有值。它们都不匹配该值。此外,如果您将视图可访问性特征设置为这个神秘的值,它会像您想要的那样工作!我尝试确定这个常量的位置,但运气不佳。如果你想做更多的挖掘,看起来苹果使用 NSObject 类别存储了可访问性特征,该类别使用具有一些名为 AXTraitsIdentifier 的常量值的关联对象。

实际上,您可以执行以下操作,但由于它未在公共 API 中定义,因此它的功能将来可能会发生变化

//Note the navBar has to be run through a voice over pass before the value is set :( or you can just directly set the value to 0x200000000000.
myContainerView.accessibilityTraits = navBar.accessibilityTraits;
Run Code Online (Sandbox Code Playgroud)

我很想听听其他人是否有这方面的信息?到目前为止,我还没有找到理想的解决方案。