有没有办法,最好到Mac OS X 10.3向后兼容,说,如果“语音”系统首被激活?

有帮助吗?

解决方案

这似乎是存储在用于通用接入一个首选项文件。该应用程序标识符为“com.apple.universalaccess”和包含用于VoiceOver的是否是打开或关闭是“voiceOverOnOffKey”标志的关键。您应该能够这样使用CFPreferences API来检索,东西看起来像:

CFBooleanRef flag = CFPreferencesCopyAppValue(CFSTR("voiceOverOnOffKey"), CFSTR("com.apple.universalaccess"));

其他提示

这是我创建了这个雨燕4.2 的解决方案,我觉得这更容易阅读Petes出色答卷为主。我也认为这是更加得心应手在这种情况下,而不是一个函数中使用一个计算属性。

var hasVoiceOverActivated: Bool {

    let key = "voiceOverOnOffKey" as CFString
    let id = "com.apple.universalaccess" as CFString

    if let voiceOverActivated = CFPreferencesCopyAppValue(key, id) as? Bool {
        return voiceOverActivated
    }

    return false

}

的VoiceOver和辅助功能,一般都是非常重要的话题,这是可悲的,尤其适用于MacOS缺乏苹果文档的是那么的难开发人员正确地实现它。

如果任何人有同样的问题,也可能是很好的了解,那声音在状态通过便捷的操作界面,现在访问:

NSWorkspace.shared.isVoiceOverEnabled

在夫特4解决方法如下:

func NSIsVoiceOverRunning() -> Bool {

  if let flag = CFPreferencesCopyAppValue("voiceOverOnOffKey" as CFString, "com.apple.universalaccess" as CFString) {
    if let voiceOverOn = flag as? Bool {
      return voiceOverOn
    }
  }

  return false
}

此外,为了使一个文本通告与在MacOS VoiceOver后,执行以下操作:

let message = "Hello, World!"
NSAccessibilityPostNotificationWithUserInfo(NSApp.mainWindow!,
  NSAccessibilityNotificationName.announcementRequested,
  [NSAccessibilityNotificationUserInfoKey.announcement: message,
  NSAccessibilityNotificationUserInfoKey.priority:
  NSAccessibilityPriorityLevel.high.rawValue])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top