NSWindow beginSheet completionHandler未调用

Z S*_*Z S 5 macos cocoa nsview nswindow nswindowcontroller

我在主窗口中显示一张纸.我使用以下代码展示工作表:

AddContactWindowController *addContact = [[AddContactWindowController alloc] initWithWindowNibName:@"AddContactWindow"];
addContact.currentViewController = myView;
self.addWindowController = addContact;

[self.view.window beginSheet: addContact.window completionHandler:^(NSModalResponse returnCode) {
    NSLog(@"completionHandler called");
}];
Run Code Online (Sandbox Code Playgroud)

AddContactWindowController是NSWindowController的子类.它内部有一个视图控制器.在视图内部是一个"关闭"按钮,它调用:

[[[self view] window] close];
Run Code Online (Sandbox Code Playgroud)

这会关闭窗口,但不会调用beginSheet中的completionHandler.这引起了我的问题.

有没有什么特别的方法我们应该关闭NSWindow表以便成功调用完成处理程序?我也尝试过,[[[self view] window] orderOut:self]但这也不起作用.

谢谢.

sud*_*-rf 6

你需要打电话-endSheet:returnCode:给你的窗户,而不是只是点出来.