Открыть окно оповещения (NASlert) с делегатом и заблокировать все остальные окна? - PullRequest
0 голосов
/ 15 июня 2011

Есть ли способ открыть окно NSAlert, установить делегата для обратного вызова didEnd, и пока отображается предупреждение, все остальные окна должны быть «отключены» (может ли само окно, но не нажимать какие-либо кнопки или изменять текст)?

1 Ответ

1 голос
/ 15 июня 2011

В вашем коде 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];

...