Есть ли способ открыть окно NSAlert, установить делегат для обратного вызова didEnd, и пока отображается предупреждение, все остальные окна должны быть «отключены» (может ли само окно, но не нажимать какую-либо кнопку или изменять какой-либо текст)?
Открыть окно оповещения (NASlert) с делегатом и заблокировать все остальные окна?
Ответы (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];
person
cocoafan
schedule
15.06.2011
Можно ли это сделать без добавления кода обратного вызова didEnd?
- person Erik Sapir; 15.06.2011