voiceover中有一个“容器”旋转器设置--它允许你快速浏览屏幕的“高级”部分(向上和向下滑动)。例如,在日历中,您有3个项目-导航栏、内容、工具栏。
我的应用程序使用自定义的UIView子类,无论我尝试做什么--我的所有视图似乎都属于一个容器--所以我不能将它们拆分成逻辑部分。我尝试将它们放在单独的视图中,实现UIAccessibilityContainer协议,并在这些父视图上设置一些可访问性属性。
有人知道如何创建多个容器吗?
发布于 2016-06-26 03:53:35
我在这个问题上做了一些挖掘,认为这是苹果使用的一个私人特征。首先,我注意到唯一识别的容器是标准UIKit类型的对象,如UITableViews、UITabBars、UINavigationBars等。因此,接下来我使用调试器检查这些组件的可访问性特征的值。它们都是0x200000000000。为了确保我没有遗漏任何一个UIAccessibilityTrait,我检查了它们的所有值。它们都不与该值匹配。此外,如果您将视图的可访问性特性设置为这个神秘的值,它将按照您的期望工作!我试着确定这个常量的位置,但没有太多的运气。如果你想做更深入的挖掘,看起来苹果使用NSObject类别存储accessibilityTraits,该类别使用具有某个常量值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;我很想知道其他人有没有这方面的消息?到目前为止,我还没有找到一个理想的解决方案。
https://stackoverflow.com/questions/27523608
复制相似问题