0

Представление контейнера верхнего уровня является пользовательским UICollectionView. Я добавил два пользовательских представления контейнера в пополнении. Иерархия дерева как нижепользовательские представления подконтейнера в UICollectionView не отображаются в iOS UIAutomation logElementTree или Xcode UI Тестирование debugDescription

пользовательских UICollectionView

| - изготовление на заказ UIView контейнера => 1 ImageButton

| - изготовление на заказ UIView контейнера => 8 Кнопки

| - пользовательские UICollectionCells

Voice Over может правильно реагировать на эти кнопки.

Но когда я попытался использовать UIAutomation с target.logElementTree(), дерево элементов находит только список UICollectioncell под куском UICollectionView, он не может найти пользовательский контейнер subview и их дочерние элементы.

Затем я попробовал Xcode UI Testing, используя app.debugDescription. Результат по-прежнему содержит только UICollectionCells в пользовательском UICollectionView без кнопок.

Как я могу заставить их отображаться в дереве элементов UIAutomation?

ответ

0

Наконец, используя Aspects с категорией пользовательских коллекции:

В пользовательской категории коллекции, переопределения +(void)load:

  • добавить аспект блок инициализировать Стонг свойства a, который хранящее все accessibilityElements после выполнения initWithFrame:collectionViewLayout: или initWithCoder:
  • Добавить аспектный блок, чтобы добавить subview в собственность a после выполнения addSubview:

наконец, реализовать UIAccessibilityContainer методы протокола, используя свойство a

Tricky часть: использование objc_setAssociatedObject и objc_getAssociatedObject для обработки a