应用程序停留在runModalForWindow上

时间:2011-11-02 21:43:02

标签: objective-c xcode macos

我正在尝试在我的应用程序顶部显示一个模态对话框,但它在关闭时会阻止我的主应用程序窗口。这是我的代码:

TutorialWindowController* pTutorialController = [[TutorialWindowController alloc] initWithWindowNibName:@"TutorialWindow"];
NSWindow* pTutorialWindow = [pTutorialController window];
DDLogInfo(@"Tutorial window opening...");
[NSApp runModalForWindow: pTutorialWindow];
DDLogInfo(@"Tutorial window closed!"); // CODE NEVER GETS HERE
[NSApp endSheet: pTutorialWindow];
[pTutorialWindow orderOut: self];

在模态对话框中,我的关闭按钮运行:

- (IBAction)closeButtonPressed:(id)sender {
    [NSApp stopModal];
}

模态对话框显示正常。但是,当我单击关闭按钮时,对话框消失,我的应用程序的主窗口没有响应。我每次尝试点击都会听到bonk。我很确定这是因为代码在runModalForWindow之后永远不会继续。如果我使用红色X关闭模态拨号,也会发生同样的事情。

我做错了什么?

4 个答案:

答案 0 :(得分:0)

在订购教程窗口后,尝试执行

  [window makeKeyAndOrderFront:self];

在主窗口上。

答案 1 :(得分:0)

您应首先致电[pTutorialWindow orderOut:nil]

答案 2 :(得分:0)

不确定closeButtonPressed处理程序。但是,请尝试添加到委托中:

- (void) windowWillClose:(NSNotification *)notification
{
    // ...
    // In there, you should verify that you are calling:
    [NSApp stopModal]
}

添加stopModal调用为我解决了这个问题。

答案 3 :(得分:0)

验证接口编辑器的连接检查器中的窗口委托是否已连接到文件的所有者。

除一个对话外,我有几种模式对话可以正常工作,而缺少的联系是唯一的区别。使连接解决问题。