makeKeyAndOrderFront
没有使我的NSWindow钥匙或前线。
我的应用没有主窗口或菜单栏,这可能是问题的一部分?
IBOutlet NSWindow *loginWindow;
//(connected in Interface Builder to the NSWindow)
NSWindow“在发布时可见”和“关闭后释放”都未经检查。
然后:
- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
[loginWindow makeKeyAndOrderFront:self];
}
打开窗口。 (注释掉它导致没有窗口被打开)。
然而:
它出现在Xcode窗口后面(不是前面)。
它似乎可以接收鼠标焦点,但不会在窗口包含的文本字段中显示按键。按键被发送到Xcode。
激活Expose时,它将显示在Expose网格中。但我无法点击窗口在Expose中选择它...它不会出现在前面。
为什么我的窗口不起作用?
答案 0 :(得分:30)
尝试调用此方法[NSApp activateIgnoringOtherApps:YES];
。这应该使它成为活跃的应用程序。
答案 1 :(得分:25)
在黑暗中刺:您在Info.plist中设置了LSBackgroundOnly
。这就是使它不起作用的原因:只有后台的应用程序无法到达前台,这就是为什么你的窗口没有到达前台。
如果您希望自己的应用无法显示在Dock中,请设置LSUIElement
。这会抑制应用程序的Dock磁贴,并防止它在菜单栏中显示自己的主菜单,但保留了将窗口放在最前面并使其成为密钥的能力。
答案 2 :(得分:1)
这两个答案都是正确的。如果它是无边界的,你还需要确保覆盖窗口子类中的canBecomeKey
。
这需要永远弄明白。 (我写了一篇关于我整个解决方案的blog post。)