【问题标题】:custom sub container views in UICollectionView not displayed in iOS UIAutomation logElementTree or Xcode UI Testing debugDescriptionUICollectionView 中的自定义子容器视图未显示在 iOS UIAutomation logElementTree 或 Xcode UI 测试 debugDescription 中
【发布时间】:2016-07-29 08:37:27
【问题描述】:

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

自定义 UICollectionView

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

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

|- 自定义 UICollectionCells

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    最后将Aspects 与自定义集合类别一起使用:

    在自定义集合类别中,覆盖+(void)load

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

    最后,使用属性a实现UIAccessibilityContainer协议方法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2015-09-24
      相关资源
      最近更新 更多