可可中的模态窗口

jde*_*une 0 cocoa objective-c nswindow nswindowcontroller cocoa-sheet

我正在尝试创建一个自定义模式窗口,这是我到目前为止的代码:

NSWindowController *modalSheet = [[NSWindowController alloc]
initWithWindowNibName:@"MyCustomWindow" owner:self];

[NSApp beginSheet:[modalSheet window]
 modalForWindow:[self windowForSheet]
  modalDelegate:nil
 didEndSelector:nil
    contextInfo:nil];
Run Code Online (Sandbox Code Playgroud)

窗口弹出正常,但它不是模态的,例如,您仍然可以对请求来自的父窗口执行操作.从NSDocument对象调用此方法.

我试过阅读:使用自定义表格

但是我不确定myCustomSheet它是什么,因为它没有在任何地方声明.我假设它是一个NSWindow实例变量.

我只是无法理解为什么它不是模态的.任何帮助将非常感激.谢谢

Zev*_*sVU 5

希望这可以帮助.总是以模态运行窗口控制器.创建自己的NSWindowController子类并添加这两个方法.

- (void)windowDidLoad
{
    [super windowDidLoad];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//TODO
        [[NSApplication sharedApplication] runModalForWindow:self.window];
    });
}

- (void)windowWillClose:(NSNotification *)notification
{
    [[NSApplication sharedApplication] stopModal];
}
Run Code Online (Sandbox Code Playgroud)