UIAutomation嵌套辅助功能元素从层次结构中消失

时间:2011-06-01 10:55:20

标签: iphone ios ios-ui-automation xcode-instruments

我有一个包含按钮和图像的两个子视图的视图,我打开辅助功能并在子视图上设置标签,我可以通过调用

来查看层次结构
UIATarget.localTarget().frontMostApp().mainWindow().logElementTree();

我得到以下例子:

  

1个窗口

     

2我的观点

     

3我的按钮

     

3我的形象

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

我得到:

  

1个窗口

     

2我的观点

为什么我的观点消失了?

1 个答案:

答案 0 :(得分:10)

直接来自iOS文档Accessibility Guide

  

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

     

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

     

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