UIAutomation嵌套的Accessibilty元素从层次结构中消失

Nei*_*ley 12 iphone ios xcode-instruments ios-ui-automation

我有一个带有两个子视图的视图,一个按钮和一个图像,我打开辅助功能并在子视图上设置标签,我可以通过调用看到层次结构

UIATarget.localTarget().frontMostApp().mainWindow().logElementTree();
Run Code Online (Sandbox Code Playgroud)

我得到以下例子:

1个窗口

2我的观点

3我的按钮

3我的形象

如果我然后打开辅助功能并为我的父视图设置标签,我将无法再在层次结构中的任何位置看到我的按钮和图像.

我得到:

1个窗口

2我的观点

为什么我的观点消失了?

Nei*_*ley 10

直接来自iOS文档辅助功能指南

使自定义容器视图的内容可访问如果您的应用程序显示包含用户与之交互的其他元素的自定义视图,则需要单独访问所包含的元素.同时,您需要确保无法访问容器视图本身.原因是用户与容器的内容交互,而不是与容器本身交互.

为此,您的自定义容器视图应实现UIAccessibilityContainer协议.该协议定义了使包含的元素在数组中可用的方法.

以下代码段显示了自定义容器视图的部分实现.请注意,仅当调用UIAccessibilityContainer协议的方法时,此容器视图才会创建可访问元素的数组.因此,如果iPhone辅助功能当前未处于活动状态,则不会创建阵列.