我想知道,在 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/44485206/