【发布时间】:2009-12-21 18:21:30
【问题描述】:
我打开一个带有以下内容的窗口:
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上方的模态窗口? - 有什么方法可以让菜单栏不显示在我在上面尝试的工作表解决方案上?
谢谢大家:-)
【问题讨论】:
-
别忘了检查
[super init…]的返回值。
标签: objective-c cocoa modal-dialog nswindow