Основываясь на превосходном ответе Пита, я создал это решение Swift 4.2 , которое, на мой взгляд, гораздо легче читать. Я также думаю, что в этом случае удобнее использовать вычисляемое свойство вместо функции.
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 и Accessibility в целом являются очень важными темами, и грустно, что отсутствие документации Apple, особенно для macOS, затрудняет для разработчиков правильную реализацию.