swift - 监控 OS X 上的应用程序切换

标签 swift macos cocoa

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

相关文章:

macos - 如何使用 libssl 安装 Siege?

objective-c - 如何使用 Objective-C 获取正在运行的进程

cocoa - 使用 NSManagedObjectContext 的 objectWithID : 的 'proper' 方法是什么

macos - Nginx 未运行。没有这样的文件或目录消息 -Mac

ios - Swift/Alamofire 完成处理程序的困难

swift - NSCollectionView 内拖放示例

ios - 通过当前模态执行 Segue 后出现 'found nil' 异常

ios - Xcode |提取开发者信息时出错

objective-c - 使用 Cocoa/objective-C 从整数(年 ... 秒)构建 NSDate

ios - 当添加到另一个对象中时,对象中的 Double 转换为字符串