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/44485206/

相关文章:

arrays - Swift 3 - 使类可迭代

ios - 使用 Text Kit 将基线与大行高的字符对齐

macos - Leopard 终端(和 iTerm)忽略控制组合键

xcode - 在 NSImageView 上设置图像

iOS iMessage 扩展 - willTransition : to and didTransition :to are not getting called

ios - 在哪里添加。使用 podspec 的 swiftdoc 和 .swiftmodule 文件

ios - 碰撞后如何阻止分数增加一以上?

BASH 递增 MAC 地址

xml - 对 NSXMLElement 属性值中的换行字符进行编码

iphone - Objective-C 方法中的双星论证?