检测窗口是否是可可中的关键窗口

时间:2010-06-24 04:56:40

标签: cocoa nswindow

我正在创建一个用户必须与一个窗口进行交互的应用程序,当他们按照他们想要的方式配置该窗口时,他们切换到另一个应用程序,然后我的应用程序将开始执行其他我将定义的内容在一个方法

对于一个示例程序,当主窗口具有焦点时,它包含一个标有“我正在聚焦”的标签,当用户点击桌面或其他窗口/应用程序时,标签将显示为“我没有聚焦”。

由于

2 个答案:

答案 0 :(得分:11)

[NSWindow isKeyWindow]可能就是你要找的东西。

  

指示窗口是否是应用程序的关键窗口。

     

- (BOOL)isKeyWindow

     

如果窗口是应用程序的关键窗口,则返回值YES;否则,没有。

如果您想要检测您的窗口何时成为密钥或何时无法成为密钥,请查看NSWindowDidBecomeKeyNotificationNSWindowDidResignKeyNotification通知。

答案 1 :(得分:11)

这与关键窗口不同。关键窗口意味着您将收到应用程序的输入事件。您想知道的是您的应用程序是否在前台。您要查找的是NSApplication通知NSApplicationDidBecomeActiveNotificationNSApplicationDidResignActiveNotification。观察那些在您的应用程序处于或不处于前台时发现的情况。将自动调用您的应用程序代理applicationDidBecomeActive:applicationDidResignActive: