我打开一个窗口,内容如下:
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 - 全屏 NSWindow 上方的 NSOpenPanel?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1941749/