我打开一个带有以下内容的窗口:
NSRect screenRect = [[NSScreen mainScreen] frame];
[super initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
int windowLevel = CGShieldingWindowLevel();
[self setLevel:windowLevel];
... 所以窗口是全屏的并且高于所有其他窗口级别(包括模态窗口)。我稍后想显示一个打开的面板,但是下面打开了我在上面创建的窗口下方的对话框(似乎 runModal 东西覆盖了我尝试设置的请求窗口级别):
NSOpenPanel *OP = [NSOpenPanel openPanel];
int windowLevel = CGShieldingWindowLevel();
[OP setLevel:windowLevel];
int returnCode = [OP runModal];
...下面在上面创建的窗口中打开了一个工作表(很好),但是它最终也显示了我之前隐藏的菜单栏(不是我想要的):
NSOpenPanel *OP = [NSOpenPanel openPanel];
[OP beginSheetModalForWindow:[self window]
completionHandler:^(NSInteger returnCode) {
NSLog(@"completionHandler called with %d", returnCode);
}];
...所以我的问题是:
- 有谁知道如何在
CGShieldingWindowLevel
之上打开模态窗口? - 有什么方法可以让菜单栏不显示在我上面尝试的工作表解决方案中吗?
谢谢大家:-)
最佳答案
好的,这里有一个更好的选择——我在查看文档时完全错过了这个:
NSOpenPanel *OP = [NSOpenPanel openPanel];
[OP setLevel:CGShieldingWindowLevel()];
[OP beginWithCompletionHandler:^(NSInteger returnCode) {
NSLog(@"completionHandler called with %d", returnCode);
}];
... 即:打开面板作为它自己的窗口,这正是我首先想要做的(呃!)
关于objective-c - NSOpenPanel 在全屏 NSWindow 之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941749/