我的工作无障碍代码库中现有的MacOS添加到自定义UI元素。我们有一个自定义错误窗口,当错误发生时会出现,并且我正在尝试让VoiceOver在错误发生时宣布错误。
当前,我正在尝试使用NSAccessibility.post(element: Any, notification: NSAccessibility.Notification, userInfo: [NSAccessibility.NotificationUserInfoKey : Any]?)
方法,但是在运行代码时,不会说出通知。
这就是我目前在我NSViewController有:
NSAccessibility.post(element: self, notification: .announcementRequested, userInfo: [
.announcement: NSLocalizedString("CANT_CONNECT_ERROR", comment: "Error string for connection failure"),
.priority: NSAccessibilityPriorityLevel.high
])
我的期望是,使用
.announcementRequested
选项,VoiceOver应该会自动接听并说出通知,但没有运气。我尝试使用不同的通知类型,尝试在.announcement
参数中放入硬编码的字符串值,并尝试对.rawValue
参数使用90
和.priority
。 最佳答案
Accessibility-Dev邮件列表上的一个老话题表明,此通知可能需要定向到NSApp的mainWindow:
https://lists.apple.com/archives/accessibility-dev/2013/Jul/msg00027.html
也许这也会为您解决问题?