在显示窗口表时禁用NSStatusWindowLevel

时间:2012-02-07 09:34:53

标签: macos cocoa objective-c-2.0

我正在使用NSWindow并将其级别设为NSStatusWindowLevel

[aWindow setLevel:NSStatusWindowLevel];

现在,当我出示一张工作表(self是我的工作表窗口)

modalAnswer = 0;
[NSApp beginSheet:self modalForWindow:aWindow modalDelegate:self didEndSelector:NULL contextInfo:nil];
[self makeKeyAndOrderFront:nil];

然后窗口没有显示在停靠栏上方,它隐藏在下面(意味着NSStatusWindowLevel不再起作用)。 我已经尝试更改工作表窗口的级别,但它不起作用。

是什么导致了这个问题?

1 个答案:

答案 0 :(得分:0)

我要求技术支持,他们发现这是一个愚蠢的错误:工作表通常是模态的,但我自己也是模态的。

  

beginModalSessionForWindow和runModalSession的组合是这里的问题。   它似乎正在服务于默认的运行循环,这导致菜单栏和Dock出现在窗口上。

     

我对你为什么要调用beginSheet:modalForWindow,然后使用NSApp的beginModalSessionForWindow感到有点困惑。为什么要手动添加模态会话?表格自动模态到它所附加的任何窗口。我习惯于看到使用“beginModalSessionForWindow”而没有床单。