NSWindow模态问题

时间:2011-04-14 11:48:39

标签: objective-c cocoa modal-dialog delay nswindow

我在我的应用程序中运行一个模态窗口,工作正常。然而问题似乎是解雇窗口。

当窗口关闭时,应用程序需要至少20秒才能继续(我在启动时显示模态窗口),但如果我点击它的停靠栏图标,它会立即继续。

以下是关闭模态窗口的方法:

[NSApp stopModal];
[updaterWindow orderOut:self];
[updaterWindow close]; 

我尝试了各种各样的东西让应用程序继续更快,例如手动切换到主运行循环并直接与主窗口对话(要求它成为关键窗口),这一切都无效。点击停靠栏图标时,与之前相同,等待20秒或即时加载。

什么会导致这样的事情?我真的很困惑。

修改

我的模态窗口实际上是以非常简单的方式创建的。我将窗口作为模态运行:

[NSApp runModalForWindow:updaterWindow];

当我完成任务后,我将其关闭:

[NSApp stopModal];
[updaterWindow orderOut:self];
[updaterWindow close];

窗口消失,但需要点击停靠栏图标或屏幕上的任意位置才能继续播放。

1 个答案:

答案 0 :(得分:0)

我现在在我的应用程序中做了类似的事情:我有一个调用模态窗口的IBAction方法:

-(IBAction)showMyModalWindow:(id)sender {
    [theModalWindow makeKeyWindow];
    NSInteger retVal = [NSApp runModalForWindow:theModalWindow];
    [theModalWindow close];
    //continue and do somethin according the value in retVal
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}

在这种情况下,theModalWindow在其自己的nib文件中有一个NSObject,它处理ok和取消按钮以解除theWindow,举例来说这里是取消按钮回调:

-(IBAction)cancelButton:(id)sender
{
    [NSApp stopModalWithCode:errAuthorizationCanceled];
}

showMyModalWindow:方法中的最后一行似乎是我的案例中需要通过向前发送应用程序所需要的...希望有一些用处!

托德。