настраиваемые представления подконтейнеров в UICollectionView, не отображаемые в iOS UIAutomation logElementTree или Xcode UI Testing debugDescription

Представление контейнера верхнего уровня — это пользовательский UICollectionView. Я добавил два пользовательских вида контейнера в месте пополнения. Дерево иерархии, как показано ниже

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

|- пользовательский контейнер UIView => 1 кнопка изображения

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

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

Голос за кадром мог правильно реагировать на эти кнопки.

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

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

Как сделать так, чтобы они отображались в дереве элементов UIAutomation?


person Xiao    schedule 08.04.2016    source источник


Ответы (1)


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

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

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

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

Сложная часть: используйте objc_setAssociatedObject и objc_getAssociatedObject для обработки a

person Xiao    schedule 20.04.2016