用代表打开警报框(NASlert)并阻止所有其他窗口?

时间:2011-06-15 09:42:15

标签: objective-c cocoa macos nsalert

有没有办法打开NSAlert窗口,为didEnd回调设置委托,当显示警告时,所有其他窗口应该被“禁用”(窗口本身可以但不按任何按钮或更改任何文本)?

1 个答案:

答案 0 :(得分:1)

在您的NSAlert代码中添加

NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
[NSApp runModalSession:session];
// NSAlert stuff here ...

在你的didEnd回调中添加

[NSApp endModalSession:session];

有关模态窗口的更多信息,请阅读NSApplication的“管理事件循环”部分。

更新:

以下是Apple文档中的示例代码,演示了如何在没有回调的情况下运行模式。

NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
for (;;) {
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
        break;
    [self doSomeWork];
}
[NSApp endModalSession:session];