下面我为自定义NSView提供了一个非常简单的测试代码,但是VoiceOver(VO)承认titleChanged但忽略了valueChanged通知。
我有两个执行changeTitle和changeValue的快捷方式。
在确保VO光标位于元素上之后,如果我按下changeTitle的快捷方式,VO将宣布新标题。
但是,如果我按下changeValue的快捷键,VO则什么也没说。
如果我手动重新调整VO光标的位置,它将读取新值。
我可以通过发送layoutChanged或announcementRequested通知来强制VO发言,但是我想知道为什么VO忽略valueChanged通知吗?
下面是测试代码,非常感谢您的帮助!
class CustomView:NSView {
var val = "Value"
var title = "Title"
override func isAccessibilityElement() -> Bool {
return true
}
override func accessibilityRole() -> NSAccessibility.Role? {
return .button
}
override func accessibilityTitle() -> String? {
return title
}
func changeTitle() {
title = "title \(Int.random(in:1...10))"
NSAccessibility.post(element: self, notification: .titleChanged)
}
override func accessibilityValue() -> Any? {
return val
}
func changeValue() {
val = "Value \(Int.random(in:1...10))"
NSAccessibility.post(element: self, notification: .valueChanged)
}
}