Ios 未获取UIAccessibilityElement的正确坐标

Ios 未获取UIAccessibilityElement的正确坐标,ios,swift,uiaccessibility,Ios,Swift,Uiaccessibility,我正试图用我的标签对我的按钮进行分组,但没有在正确的位置获得可访问的矩形 在一直滑动到元素后,它的宽度和高度都是正确的,但y位置完全错误。它说的是正确的VO,但我不知道为什么位置不正确。我有以下代码 let checkboxAccessible = UIAccessibilityElement(accessibilityContainer: view) let unionRect = passwordCheckbox.frame.union(showPasswordText.frame) che

我正试图用我的标签对我的按钮进行分组,但没有在正确的位置获得可访问的矩形

在一直滑动到元素后,它的宽度和高度都是正确的,但y位置完全错误。它说的是正确的VO,但我不知道为什么位置不正确。我有以下代码

let checkboxAccessible = UIAccessibilityElement(accessibilityContainer: view)
let unionRect = passwordCheckbox.frame.union(showPasswordText.frame)
checkboxAccessible.accessibilityFrame = UIAccessibilityConvertFrameToScreenCoordinates(unionRect, self.view)
checkboxAccessible.accessibilityLabel = NSLocalizedString("Show Password", comment: "showPasswordText")
view.accessibilityElements = [productTitle, leadInText, emailTextField, passwordTextField, checkboxAccessible, loginButton, forgotPasswordView, helpButton]

任何帮助都将不胜感激

调试后,我发现我犯了什么错误。上面提到的所有更改都在ViewDidLoad中,到那时我们还没有得到正确的帧


因此,我在viewDidLayoutSubviews中进行了这些更改,现在获得了正确的帧

我遇到了同样的问题,我有一个
StackView
,它有两个
iboutlet
(比如一个标题和一个值)。我已经挣扎了几个月,不明白为什么我的容器找不到框架的正确位置(
self.frame

最近,当我回来尝试解决这个问题时,我发现他们正在使用
union()
函数。我在我的箱子里试过了,效果非常好

工作分组元素的示例:
class CustomView: UIView {
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var valueLabel: UILabel!
    
    private var _accessibilityElements: [Any]?
    override var accessibilityElements: [Any]? {
        set {
            _accessibilityElements = newValue
        }
        
        get {
            guard _accessibilityElements == nil else {
                return _accessibilityElements
            }
            
            var elements = [UIAccessibilityElement]()
            
            guard let titleText = titleLabel.text,
                let valueText = valueLabel.text else {
                    return elements
            }
            
            let latitudeElement = UIAccessibilityElement(accessibilityContainer: self)
            latitudeElement.accessibilityLabel = "\(titleText), \(valueText)"
            latitudeElement.accessibilityFrameInContainerSpace = titleLabel.frame.union(valueLabel.frame) // Before: "self.frame"
            elements.append(latitudeElement)
            _accessibilityElements = elements
            
            return _accessibilityElements
        }
    }
    
    func removeAccessibilityElements() {
        _accessibilityElements = nil
    }
}