首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持NSWindow领先

保持NSWindow领先
EN

Stack Overflow用户
提问于 2011-03-20 03:43:45
回答 6查看 13.5K关注 0票数 17

我从我的主NSWindow打开一个NSWindow。

代码语言:javascript
复制
DropHereWindowController *dropHereWindowController = [[DropHereWindowController alloc] initWithWindowNibName:@"DropHereWindow"];
[dropHereWindowController showWindow:nil];

当我将一个文件从finder拖到那个"DropHereWindow“时,我希望这个窗口停留在我的主窗口的顶部。然而,当打开查找器(不再有焦点)时,我的"DropHereWindow“就在我的主窗口后面。

我尝试了orderFront,makeKey,makeKeyAndFront,但是都没有用。我能做些什么呢?

EN

回答 6

Stack Overflow用户

发布于 2011-03-20 04:30:39

方法:

代码语言:javascript
复制
- (void)setLevel:(NSInteger)windowLevel

NSWindow的子类:

代码语言:javascript
复制
[self setLevel: NSStatusWindowLevel];

或者简单地使用:

代码语言:javascript
复制
[window setLevel: NSStatusWindowLevel];

可用级别:

  • NSNormalWindowLevel
  • NSFloatingWindowLevel
  • NSSubmenuWindowLevel
  • NSTornOffMenuWindowLevel
  • NSModalPanelWindowLevel
  • NSMainMenuWindowLevel
  • NSStatusWindowLevel
  • NSPopUpMenuWindowLevel
  • NSScreenSaverWindowLevel
  • kCGDesktopWindowLevel
票数 22
EN

Stack Overflow用户

发布于 2011-03-20 07:11:10

你可以说:

我试过orderFront,makeKey,makeKeyAndFront,但是都没有用。

然后:

finder Method:

  • (void)setLevel:(NSInteger)windowLevelIt无法工作,当单击 icon.

时,窗口仍然位于我的主窗口后面

那你就做错了什么。

首先,一个窗口无论如何都不应该自动移到另一个窗口后面。要么你(或者用户)在排序主窗口的前面,要么你在排序另一个窗口的后面。我假设您不是在做后者。

另一方面,orderFront:makeKeyAndOrderFront:setLevel:确实可以工作。特别是,setLevel:将窗口放置在整个其他平面上,因此无论您执行什么操作,它都将始终位于具有默认级别的窗口的前面(或后面,具体取决于您选择的级别)。

我猜你没有把你的window插座连接到窗口上,或者你不小心把它断开了,这意味着你正在向nil发送你的orderFront:/setLevel:消息,而nil什么也不做。通过将窗口记录到控制台,确保在发送orderFront:setLevel:消息的位置填充插座。如果它显示“(Null)”或“0x0”(取决于您记录它的方式),那么您的插座持有nil;请检查它是否已连接到nib中,以及您是否已加载nib/实例化窗口控制器。

话虽如此,我不同意setLevel:是正确的解决方案。如果您只想让一个窗口位于另一个特定窗口的前面,而不是将它放在另一个完整的平面上,那么make it a child window

票数 11
EN

Stack Overflow用户

发布于 2018-02-17 09:24:22

Swift 4.0,Xcode 9.0

可以将NSWindowlevel属性设置为floating。例如,如果你是NSWindow的子类化,你可以在覆盖初始化中设置它。

代码语言:javascript
复制
self.level = .floating

你也可以通过self.window?从你的NSWindowController获取NSWindow

There are different levels:

NSNormalWindowLevel

NSWindow对象的默认级别。

NSFloatingWindowLevel

对于浮动选项板非常有用。

NSSubmenuWindowLevel

为子菜单保留。与NSTornOffMenuWindowLevel同义,这是首选。

NSTornOffMenuWindowLevel

撕下菜单的级别。NSSubmenuWindowLevel的同义词。

NSModalPanelWindowLevel

模式面板的标高。

NSMainMenuWindowLevel

为应用程序的主菜单保留。

NSStatusWindowLevel

状态窗口的级别。

NSPopUpMenuWindowLevel

弹出菜单的级别。

NSScreenSaverWindowLevel

屏幕保护程序的级别。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5364460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档