检测屏幕保护程序何时使用Cocoa激活

检测屏幕保护程序何时使用Cocoa激活,cocoa,macos,detect,screensaver,Cocoa,Macos,Detect,Screensaver,当Mac OS X屏幕保护程序激活或进入睡眠状态时(最好使用cocoa),是否有方法触发操作?您可以在10.6上注册各种分布式通知,我看到com.apple.screenIsLocked/screenIsLocked和com.apple.screensaver.didstart/willstop/didstop。(旧版本的Mac OS X可能没有所有这些通知。)您可以在使用时观察这些通知 另请参见。使用swift的快速代码片段: NSDistributedNotificationCenter.d

当Mac OS X屏幕保护程序激活或进入睡眠状态时(最好使用cocoa),是否有方法触发操作?

您可以在10.6上注册各种分布式通知,我看到com.apple.screenIsLocked/screenIsLocked和com.apple.screensaver.didstart/willstop/didstop。(旧版本的Mac OS X可能没有所有这些通知。)您可以在使用时观察这些通知


另请参见。

使用swift的快速代码片段:

NSDistributedNotificationCenter.defaultCenter().addObserver(
        self,
        selector: "screenIsLocked:",
        name: "com.apple.screenIsLocked",
        object: nil)
self是您要注册的观察者,selector是函数处理程序,name是通知名称,object是可选的通知发送者,如果指定,则仅将来自此发送者的通知传递给观察者

还请注意,您可以将nil作为名称传递,并接收发送的全部通知,而不仅仅是指定的通知。

PS:您可以订阅许多通知,因此请确保您知道它们是哪个对象的成员,以便能够使用它们。例如签出和通知。

swift 4:

DistributedNotificationCenter.default().addObserver(self, selector: #selector(screenIsLocked(_:)), name: Notification.Name("com.apple.screenIsLocked"), object: nil)
处理程序:

@objc func screenIsLocked(_ notification: Notification) {
    // do stuff here
}
可能重复的