我的工作无障碍代码库中现有的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

也许这也会为您解决问题?

07-27 13:34