objective-c - 如何在 MacOS 中检测 VoiceOver 是否开启?
问题描述
我正在开发 MacOS 应用程序,但我不知道如何收听辅助功能状态更改(例如,当 VoiceOver 开启或关闭时)。
在 iOS 中,有一个我可以收听的通知,UIAccessibilityVoiceOverStatusDidChangeNotification
.
MacOS中是否有等价物?
解决方案
事实证明,有一个隐藏的 api 可以收听可访问性通知。你可以听@"NSApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification"
[center addObserver:self
selector:@selector(onAccessibilityStatusChanged:)
name:@"NSApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification"
object:nil];
然后在方法中可以查看10.13引入的voiceOverEnabled
if(@available(macOS 10.13, *)) {
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
NSLog(@"got notification voiceover enabled ? %d",ws.voiceOverEnabled);
}
推荐阅读
- c# - 文本框为空时如何返回所有值
- node.js - Stripe 不允许将费用与一次性来源的客户相关联
- python - 在字符串内部的列表中迭代字典
- javascript - 如何在传单中动态更改 worldCopyJump 值?
- android - ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能
- html - 为什么两列被压在一起?
- python - 使用子进程从 Python 运行 PDAL bash 命令的问题
- php - RESTful webservice Moodle 插件身份验证失败
- imagemagick-identify - 如何纠正windows上imagemagick的以下错误?
- android - 如何将 BottomSheetDialogFragment 的结果传递给启动它的 Activity?