Luc*_*ano 5 accessibility uitextfield ios voiceover
我在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
}
}
Run Code Online (Sandbox Code Playgroud)
您应该重写 UIAccessibleContainer 方法以获得子视图可访问的框架。在本例中,我只获得按钮,但您可以忽略它。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |