我有一个包含按钮和图像的两个子视图的视图,我打开辅助功能并在子视图上设置标签,我可以通过调用
来查看层次结构UIATarget.localTarget().frontMostApp().mainWindow().logElementTree();
我得到以下例子:
1个窗口
2我的观点
3我的按钮
3我的形象
如果我打开辅助功能并为父视图设置标签,我将无法再在层次结构中的任何位置看到我的按钮和图像。
我得到:
1个窗口
2我的观点
为什么我的观点消失了?
答案 0 :(得分:10)
直接来自iOS文档Accessibility Guide
使自定义容器视图的内容可访问 如果您的应用程序显示包含用户与之交互的其他元素的自定义视图,则需要单独访问所包含的元素。同时,您需要确保无法访问容器视图本身。原因是用户与容器的内容进行交互,而不是与容器本身进行交互。
要实现此目的,您的自定义容器视图应实现UIAccessibilityContainer协议。该协议定义了使包含的元素在数组中可用的方法。
以下代码段显示了自定义容器视图的部分实现。请注意,仅当调用UIAccessibilityContainer协议的方法时,此容器视图才会创建可访问元素的数组。因此,如果iPhone辅助功能当前未处于活动状态,则不会创建该阵列。