我想让观察者NSWindow.didEnterFullScreenNotification
由所有应用全局触发。怎么做?
背景信息
我正在标记水印安全性应用程序,但是当任何应用程序进入全屏模式时它不起作用,而当其他应用程序退出全屏模式时它可以工作,所以我的解决方案如下:
NSWindow.didEnterFullScreenNotification
,如果收到任何通知,则将数据发送到服务器。// NotificationCenter.default.addObserver Can only observe within my watermark app
NotificationCenter.default.addObserver(forName: NSWindow.didEnterFullScreenNotification, object: nil, queue: .main) { (noti) in
print("didEnterFullScreenNotification")
}
NSEvent.addGlobalMonitorForEvents
似乎那里有window属性,但仍然不知道该怎么做答案 0 :(得分:1)
只有可以“全局”观察的通知是发布到NSDistributedNotificationCenter的通知。您在Cocoa API中看到的所有常规通知仅发布到应用程序的内部/“本地”通知中心。
您可以通过添加观察者并传递nil
作为名称和对象来查看发布了哪些全局通知。然后,您可以记录收到的通知的名称。窗口全屏显示时唯一触发的通知是NSWorkspaceActiveSpaceDidChangeNotification
,但这仅表示空间已更改;没有办法知道是因为窗口变成了全屏。