UIAccessibility.convertToScreenCoordinates() 总是 return 一个 CGRect(0,0,0,0)
UIAccessibility.convertToScreenCoordinates() always return a CGRect(0,0,0,0)
我正在尝试增加自定义 UIView() 中按钮的命中目标,该自定义 UIView() 是另一个父视图的子视图。我使用 convertToScreenCoordinates() 来尝试实现这一点。下面是一个例子
let rect2 = CGRect(x: 25, y: 21, width: 200, height: 44)
let newRect = UIAccessibility.convertToScreenCoordinates(rect2, in: self)
其中 self 是自定义 UIView()
调试,我看到 newRect = CGRect(0,0,0,0)
因此
button.accessibilityFrame = newRect // Does not work as intended as VoiceOver frame is now size 0,0 and origin 0,0
我遇到了同样的问题。结果是我在定位视图之前设置了 accessibilityFrame
属性。我通过将此代码更改为自定义视图的 layoutSubviews
方法来修复它。
override func layoutSubviews() {
super.layoutSubviews()
let rect2 = CGRect(x: 25, y: 21, width: 200, height: 44)
let newRect = UIAccessibility.convertToScreenCoordinates(rect2, in: self)
button.accessibilityFrame = newRect
}
我正在尝试增加自定义 UIView() 中按钮的命中目标,该自定义 UIView() 是另一个父视图的子视图。我使用 convertToScreenCoordinates() 来尝试实现这一点。下面是一个例子
let rect2 = CGRect(x: 25, y: 21, width: 200, height: 44)
let newRect = UIAccessibility.convertToScreenCoordinates(rect2, in: self)
其中 self 是自定义 UIView()
调试,我看到 newRect = CGRect(0,0,0,0)
因此
button.accessibilityFrame = newRect // Does not work as intended as VoiceOver frame is now size 0,0 and origin 0,0
我遇到了同样的问题。结果是我在定位视图之前设置了 accessibilityFrame
属性。我通过将此代码更改为自定义视图的 layoutSubviews
方法来修复它。
override func layoutSubviews() {
super.layoutSubviews()
let rect2 = CGRect(x: 25, y: 21, width: 200, height: 44)
let newRect = UIAccessibility.convertToScreenCoordinates(rect2, in: self)
button.accessibilityFrame = newRect
}