检测窗口是否为cocoa中的关键窗口

检测窗口是否为cocoa中的关键窗口,cocoa,nswindow,Cocoa,Nswindow,我正在制作一个应用程序,用户必须与一个窗口交互,当他们按照自己想要的方式配置该窗口时,他们会切换到另一个应用程序,然后我的应用程序将开始执行我在方法中定义的其他操作 例如,当主窗口有焦点时,它包含一个标签,上面写着“我已聚焦”,当用户单击桌面或其他窗口/应用程序时,标签将显示为“我未聚焦” 谢谢可能就是你想要的 指示该窗口是否为应用程序的关键窗口 -(BOOL)isKeyWindow 如果窗口是应用程序的关键窗口,则返回值YES;否则,不会 如果要检测窗口何时变为关键帧或何时不再是关键帧,请查看

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

例如,当主窗口有焦点时,它包含一个标签,上面写着“我已聚焦”,当用户单击桌面或其他窗口/应用程序时,标签将显示为“我未聚焦”

谢谢

可能就是你想要的

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

-(BOOL)isKeyWindow

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


如果要检测窗口何时变为关键帧或何时不再是关键帧,请查看
NSWindowDiBecomeKeyNotification
NSWindowDiDeResignKeyNotification
通知。

这与关键帧窗口不同。键窗口意味着您将接收应用程序的输入事件。你想知道的是你的应用程序是否在前台。您要查找的是
NSApplication
通知
nsapplicationidbecomeactivitification
nsapplicationidresignactivitification
。观察这些,以发现您的应用程序何时在前台或不在前台。这些事件将自动调用应用程序代理的
applicationIDBecomeActive:
applicationIDResignActive:

Zanok:需要澄清的是,windows与Mac OS X中的应用程序是分开的。一个应用程序可以而且确实有多个窗口。您需要决定是关注活动窗口(相对于应用程序中的其他窗口,包括“关于”面板、字体面板、颜色面板,可能还有“首选项”面板)还是关注活动应用程序(相对于其他应用程序)。