我想知道,在 Swift 应用程序中,用户何时从一个应用程序切换到另一个应用程序,这只是一般情况。
例如:从 Google Chrome 切换到 Xcode 等不同的应用程序会触发此事件。
有没有什么方法可以获取应用程序切换事件,比如通过事件监视器?
最佳答案
您可以在 NSWorkspace.sharedWorkspace().notificationCenter
上添加一个观察者,观察 NSWorkspaceDidActivateApplicationNotification
键。您将选择器指向您的方法之一,然后从 userInfo
字典中获取信息。
AppDelegate 中的简单示例:
swift 2.2
func applicationDidFinishLaunching(notification: NSNotification) {
NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self,
selector: #selector(activated),
name: NSWorkspaceDidActivateApplicationNotification,
object: nil)
}
func activated(notification: NSNotification) {
if let info = notification.userInfo,
app = info[NSWorkspaceApplicationKey],
name = app.localizedName {
print(name)
}
}
swift 3
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSWorkspace.shared().notificationCenter.addObserver(self,
selector: #selector(activated(_:)),
name: NSNotification.Name.NSWorkspaceDidActivateApplication,
object: nil)
}
func activated(_ notification: NSNotification) {
if let info = notification.userInfo,
let app = info[NSWorkspaceApplicationKey] as? NSRunningApplication,
let name = app.localizedName
{
print(name)
}
}
关于swift - 监控 OS X 上的应用程序切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408761/