UIBarButtonItem пользовательский доступ - PullRequest
0 голосов
/ 24 января 2019

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

Я устанавливаю accessibilityID = "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)
    }
}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

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

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

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

enter image description here

0 голосов
/ 24 января 2019

Для метки runTime нужен кадр или ограничение.

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
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...