UI Testing Xcode 7- не может получить доступ к элементу внутри подпредставления

Я пытаюсь получить доступ к элементу внутри подпредставления и считаю, что это невозможно.

Иерархия:

Контроллер просмотра:

  • Посмотреть
    • tempView
    • userEnterView
      • zipCodeEntered

Я хочу получить доступ к текстовому полю zipCodeEntered. У меня есть метка доступности с именем "zipCodeEntered".

Когда я пытаюсь записать автоматизацию, она регистрирует только суперпредставление "userEnterView", а не фактическое текстовое поле, к которому я могу подключиться.

Я печатаю "app.otherElements [SUPER_VIEW_NAME].debugDescription", чтобы увидеть, какие элементы находятся в этой иерархии, и он не печатает ни одного.

Любые идеи относительно того, почему я не могу получить доступ к этим элементам/как я могу получить к ним доступ? enter image description here

Ответы

Ответ 1

Подразделы недоступны, поскольку родительский вид не является видом контейнера. Из раздела Как сделать доступным ваше приложение для iOS в Руководстве по программированию доступности:

С точки зрения доступности, пользовательский вид представляет собой либо индивидуальный вид, либо представление контейнера. Отдельный вид не содержит других видов, которые должны быть доступны.

С другой стороны, представление контейнера содержит другие элементы, с которыми пользователи могут взаимодействовать.

Чтобы сделать доступным представление в представлении родительского представления, сообщите UIAccessibility, что он является контейнером доступности, возвращая NO из -isAccessibilityElement и реализуя методы протокола UIAccessibilityContainer.

Ответ 2

Единственное, что исправило это для меня, было установить флажок "Доступность", чтобы включить его в Интерфейсном Разработчике.

enter image description here

Если не работает в IB, попробуйте установить для свойства isAccessibilityElement представления isAccessibilityElement true.

Надеюсь, это поможет!

Ответ 3

Я также столкнулся с этой проблемой в своем UITableView. У моей ячейки есть контейнерView (UIView), который имеет subviews (TextView, UIButton...) и collectionView с его ячейками.

Я попробовал принятый ответ, но он не сработал. (UI Recorder или ручной код не распознал мои подэлементы). Но иногда я обнаружил, что UITest внезапно узнал мои подэлементы, когда я вызвал что-то, чтобы обновить таблицу.

Так что прямо сейчас я знаю, что UITest не может найти мои subviews, я вызываю tableView.reloadData, чтобы обновить представление, а затем все проблемы исчезли.

В любом случае, это всего лишь обходной путь, я надеюсь, что Apple сможет исправить его как можно скорее.