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 に答える