سؤال

Is there a way to open a NSAlert window, set a delegate for didEnd callback and while the alert is shown, all other windows should be "disabled" (can the window itself but not push any button or change any text)?

هل كانت مفيدة؟

المحلول

In your NSAlert code add

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

In your didEnd callback add

[NSApp endModalSession:session];

For more information about modal windows read NSApplication's "Managing the Event Loop" section.

Update:

Here is a sample code from Apple's doc showing how to run modal without callbacks.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top