0

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

4

1 回答 1

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];

于 2011-06-15T10:04:50.103 回答