UICollectionView中的自定义子容器视图未显示在iOS UIAutomation中的logElementTree或Xcode UI测试debugDescription

时间:2016-04-08 07:05:26

标签: ios accessibility ui-automation ios-ui-automation xcode-ui-testing

顶级容器视图是自定义UICollectionView。我在自上而下的位置添加了两个自定义容器视图。层次结构树如下所示

  

自定义UICollectionView

     

| - 自定义UIView容器=> 1 ImageButton

     

| - 自定义UIView容器=> 8个按钮

     

| - 自定义UICollectionCells

Voice Over可以正确响应这些按钮。

但是当我尝试将UIAutomationtarget.logElementTree()一起使用时,元素树只在cutom UICollectionView下找到UICollectioncell列表,它找不到自定义子视图容器及其子代。

然后我尝试使用app.debugDescription进行Xcode UI测试。结果仍然只包含自定义UICollectionView中的UICollectionCells,没有按钮。

如何让它们出现在UIAutomation元素树中?

1 个答案:

答案 0 :(得分:0)

最后将Aspects与自定义收藏类别结合使用:

在自定义收藏类别中,覆盖+(void)load

  • 添加方面块以初始化stong属性a,该属性在执行后accessibilityElementsinitWithFrame:collectionViewLayout:
  • 存储所有initWithCoder:
  • 添加方面块以在执行a
  • 后将子视图添加到属性addSubview:

最后,使用属性a

实现UIAccessibilityContainer协议方法

棘手的部分: 使用objc_setAssociatedObjectobjc_getAssociatedObject来处理a