我正在创建一个 Mac 菜单栏应用程序,我希望在用户切换可见桌面空间(包括外部显示器)时收到通知。这是一个只有菜单栏的应用程序(即没有实际窗口)。
我看过一些类似的问题,但似乎没有一个答案对我有用。我见过的大多数的答案涉及观察NSWorkspaceActiveSpaceDidChangeNotification的NSWorkspace的通知中心。
我尝试在我的 AppDelegate 中观察到这一点,我applicationDidFinishLaunching有以下代码:
NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self,
selector: Selector(spaceChanged()),
name: NSWorkspaceActiveSpaceDidChangeNotification,
object: nil)
在我的spaceChanged()函数中,我只是为了调试目的向控制台打印一些东西。这个函数只会在应用启动时被调用。每当我更改桌面空间时,尽管我从未收到通知。
有什么我想念的吗?任何帮助表示赞赏。
而不是Selector(spaceChanged())你应该使用#selector(spaceChanged). 使用Selector(spaceChanged()),您实际上是立即调用此函数,并使用结果(可能只是一个空 tuple ())来创建一个空选择器。后一种语法实际上创建了引用您的spaceChanged函数的正确选择器。
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |