简体   繁体   中英

NSWindow makeKeyAndOrderFront makes window appear, but not Key or Front

makeKeyAndOrderFront is not making my NSWindow key or front.

My app does not have a main window or menubar , which may be part of the problem?

IBOutlet NSWindow *loginWindow;
//(connected in Interface Builder to the NSWindow)

The NSWindow has "visible at launch" and "release when closed" both unchecked.

Then:

- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [loginWindow makeKeyAndOrderFront:self];
}

This does open the window. (commenting it out results in no window being opened).

However:

  • It appears behind the Xcode window (not front).

  • It appears to recieve mouse focus, but will not take keypresses in the textfields the window contains. The keypresses are sent to Xcode.

  • It appears in the Expose grid when Expose is activated. But I cannot click the window to select it in Expose... it won't come to the front.

Why isn't my Window working?

Try calling this method [NSApp activateIgnoringOtherApps:YES]; . This should make it the active application.

Stab in the dark: You have LSBackgroundOnly set in your Info.plist. That's what makes this not work: A background-only application cannot come to the foreground, which is why your window does not come to the foreground.

If you want your app to not show up in the Dock, set LSUIElement instead. This suppresses your app's Dock tile and keeps it from showing its own main menu in the menu bar, but preserves its ability to bring a window frontmost and make it key.

Both of these answers are correct. You'll also need to make sure you override canBecomeKey in your window subclass if it's borderless.

This took be forever to figure out. (I wrote a blog post about the entirety of my solution.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM