Доступность customView UIBarButtonItem

Я создал UIBarButtonItem с customView, установленным на BadgeButton (UIButton с добавленной меткой значка).

Я устанавливаю accessibilityIdentifier = "properIDHere" и isAccessibilityElement = true для обоих: aBadgeButton и aBadgeButton.badgeLabel

При запуске UITests кнопка бейджа видна и доступна по идентификатору, а badgeLabel — нет. У вас есть идеи, почему?

final class BadgeButton: MyBaseButton {
   let badgeLabel = UILabel()

   override func addSubviews() {
    addSubview(badgeLabel)
   }

   override func setupConstraints() {
    badgeLabel.snp.makeConstraints { make in
        make.width.height.equalTo(badgeSize)
        make.centerX.equalToSuperview().offset(badgeXOffset)
        make.centerY.equalToSuperview().offset(badgeYOffset)
    }
}

person izik461    schedule 24.01.2019    source источник


Ответы (2)


Для метки времени выполнения требуется фрейм или ограничение.

final class BadgeButton: UIButton {
        let badgeLabel = UILabel()
        override init(frame: CGRect) {
            super.init(frame: frame)
            setupView()
        }

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            setupView()
        }

        func setupView() {
            self.addSubview(badgeLabel)
            badgeLabel.frame = CGRect(x: self.frame.width / 2, y: 0, width: 20, height: 20)
            //or you setup runTime Constraint
        }
    }
person Pradip Patel    schedule 24.01.2019
comment
Спасибо за предложение, добавление значка в качестве подвида и его компоновка показались мне очевидными. Значок обычно виден, но не через инспектор доступности XCTest - person izik461; 24.01.2019

В родительском/настраиваемом представлении BadgeButton попробуйте отключить специальные возможности. Оставьте его включенным для UILabel.

После этого вернитесь в свой XCTestCase и распечатайте XCUIApplication().debugDescription, чтобы увидеть, можете ли вы теперь видеть информацию о доступности UILabel в иерархии элементов приложения.

См. этот пост как возможный дубликат: Тесты пользовательского интерфейса Xcode могут не находит представления, которые добавляются программно

введите здесь описание изображения

person Blaine    schedule 04.02.2019