我使用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中实际停止应用程序,然后再次运行它,以便重新显示首选项面板。
提前感谢任何人的帮助!