UIBarButtonItem的customView可访问性

问题描述 投票:0回答:2

我创建了UIBarButtonItemcustomView设置为BadgeButton(添加了徽章标签的UIButton)。

我同时为accessibilityIdentifier = "properIDHere"isAccessibilityElement = true设置了aBadgeButtonaBadgeButton.badgeLabel

[运行UITests时,徽章按钮是可见的,并且ID可以访问它,但是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)
    }
}
ios uibarbuttonitem xctest xcuitest
2个回答
0
投票

运行时标签需要框架或约束。

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
        }
    }

0
投票

BadgeButton父/自定义视图上,尝试禁用辅助功能。保持UILabel处于启用状态。

[此后,回到您的XCTestCase中,打印出XCUIApplication()。debugDescription以查看您现在是否能够在应用程序的元素层次结构中查看UILabel的可访问性信息。

将此帖子视为可能的重复:Xcode UI Tests can't find views that are added programatically

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.