当“代理”应用程序在后台启动时,NSPanels消失了

时间:2012-12-08 01:27:57

标签: objective-c xcode nsstatusitem nspanel

我使用Cocoa“状态栏”教程(http://cocoatutorial.grapewave.com/tag/status-bar/)作为尝试构建自己只显示为StatusItem的代理的起点。

此应用程序没有主要的NSWindow对象,它有三个与之关联的NSPanel。一个NSPanel用作“应用程序首选项”窗口,另外两个只是提示用户使用“确定”按钮输入一小段文本。

首选项面板通过NSMenuItem启动,如下所示:

NSMenuItem *showPrefsMI = [[NSMenuItem alloc] initWithTitle:@"Show Prefs" action:@selector(makeKeyAndOrderFront:) keyEquivalent:@""];
[showPrefsMI setTarget:prefsPanel];
[menu addItem:showPrefsMI];

当我从XCode内部构建并运行应用程序时,一切似乎都运行得很好。但是,当我从Xcode外部运行应用程序时,比如从Finder运行,这些窗口根本就不会出现。

此外,我能够从XCode中复制行为。如果我显示首选项面板,然后单击它(例如,我单击此Safari窗口),首选项面板就会消失,永远不会再被看到。我必须从XCode中实际停止应用程序,然后再次运行它,以便重新显示首选项面板。

提前感谢任何人的帮助!

0 个答案:

没有答案