我在UITextField的右视图中添加了两个UIButton,但是VoiceOver无法看到它们(它仅“读取”包含视图)。我已经将右视图的accessibilityElementsHidden设置为“否”。我不明白我做错了什么... 编辑:我正在子类化UITextField,可能与此有关?
// MARK: - VoiceOver handling
extension MyTextField {
public var voiceOverElements: [UIAccessibilityElement] {
guard UIAccessibility.isVoiceOverRunning else {
return []
}
let element: UIAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
let rect: CGRect = UIAccessibility.convertToScreenCoordinates(frame, in: self)
element.accessibilityFrame = rect
var result: [UIAccessibilityElement] = subviews.filter { $0 is UIButton }
.map {
let element: UIAccessibilityElement = UIAccessibilityElement(accessibilityContainer: self)
let rect: CGRect = UIAccessibility.convertToScreenCoordinates($0.frame, in: self)
element.accessibilityFrame = rect
return element
}
result.insert(element, at: 0)
return result
}
public override class func isAccessibilityElement() -> Bool {
false
}
public override func accessibilityElement(at index: Int) -> Any? {
voiceOverElements[index]
}
public override func accessibilityElementCount() -> Int {
voiceOverElements.count
}
public override func index(ofAccessibilityElement element: Any) -> Int {
guard let element = element as? UIAccessibilityElement,
let toRet = voiceOverElements.firstIndex(of: element) else {
return 0
}
return toRet
}
}