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

Zan*_*nok 8 cocoa nswindow

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

对于一个示例程序,当主窗口具有焦点时,它包含一个标签,上面写着"我很专注",当用户点击桌面或其他窗口/应用程序时,标签将显示为"我没有集中注意力".

谢谢

rob*_*jam 11

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

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

- (BOOL)isKeyWindow

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

如果您想要检测窗口何时成为密钥,或者当它停止成为密钥时,请查看NSWindowDidBecomeKeyNotificationNSWindowDidResignKeyNotification通知.


Rob*_*ier 11

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

  • Zanok:值得澄清的是,Windows与Mac OS X中的应用程序是分开的.应用程序可以并且确实有多个窗口.您需要决定是否关心活动窗口(与应用程序中的其他窗口相对,包括"关于"面板,"字体"面板,"颜色"面板,可能还有"首选项"面板)或活动应用程序(与其他应用程序相对). (2认同)