当我在OSX Lion中启动我的应用程序时,它总是运行在底层,在其他应用程序后面

时间:2011-12-30 19:16:36

标签: objective-c macos cocoa osx-lion

当我在OSX Lion中启动我的应用程序时,它总是运行在底层,而不是其他应用程序。

我怀疑这个问题与Lion中关于恢复主窗口最后配置的新功能有关。实际上,如果我从Library / Saved Application State文件夹中删除app文件夹,并且我再次运行我的应用程序,则主窗口将显示在顶部。

此外,如果我点击停靠栏,应用程序会出现在前面,但它永远不会在其他应用程序面前启动。

我尝试了几件事,例如:

  
      
  • 清除xib文件中的AutoSave字段
  •   
  • setLevel:NSNormalWindowLevel(如果我使用NSSubmenuWindowLevel,即使它失去焦点,它也始终保持在前面)
  •   
  • [window makeKeyAndOrderFront:self]
  •   

但没有一个有效。

我不知道这是否重要,但我在应用首选项中的基本xib文件是“mainMenu.xib”而不是“document.xib”。因为mainWindow被认为是主要的应用程序窗口,因此没有显示在顶部?

在任何情况下,我认为代码中存在问题,因为默认情况下,应用程序应该在窗口顶部显示。

由于

2 个答案:

答案 0 :(得分:1)

我也看到过这种情况也会发生,尽管在调试器下运行时似乎只会发生这种情况。

尝试在[NSApp activateIgnoringOtherApps:YES]

中致电applicationDidFinishLaunching:

答案 1 :(得分:0)

我通过使用

禁用Resume来解决
//disable Lion resume
if([[NSUserDefaults standardUserDefaults] objectForKey: @"ApplePersistenceIgnoreState"] == nil)
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ApplePersistenceIgnoreState"];