0

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

[aWindow setLevel:NSStatusWindowLevel];

现在,当我展示一张表格时(self是我的表格窗口)

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

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

是什么导致了这个问题?

4

1 回答 1

0

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

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

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

于 2012-02-15T07:35:38.117 回答