NSWindow Модальные Проблемы - PullRequest
2 голосов
/ 14 апреля 2011

В моем приложении запущено модальное окно, которое работает нормально.Однако проблема заключается в том, что окно закрывается.

Пока окно закрывается, приложение продолжает работать не менее 20 секунд (я показываю модальное окно при запуске), но оно мгновенно продолжится, если я нажмуна его значок док-станции.

Вот как я закрываю модальное окно:

[NSApp stopModal];
[updaterWindow orderOut:self];
[updaterWindow close]; 

Я пробовал разные вещи, чтобы приложение продолжало работать быстрее, например, переключение вручную в основной цикл выполнения и обращение кглавное окно напрямую (с просьбой стать ключевым окном), которое все не работало.То же, что и раньше, 20 секунд ожидания или мгновенная загрузка при нажатии на значок док-станции.

Что может вызвать что-то подобное?Я действительно сбит с толку.

Редактировать:

Мое модальное окно на самом деле создано очень простым способом.Я запускаю мое окно как модальное:

[NSApp runModalForWindow:updaterWindow];

Когда я закончу с вещами, я закрываю его:

[NSApp stopModal];
[updaterWindow orderOut:self];
[updaterWindow close];

Окно исчезает, но для этого нужно щелкнуть значок док-станцииили в любом месте на экране для продолжения приложения.

1 Ответ

0 голосов
/ 04 июня 2012

В настоящее время я делаю нечто подобное в своем приложении: у меня есть метод IBAction, который вызывает модальное окно:

-(IBAction)showMyModalWindow:(id)sender {
    [theModalWindow makeKeyWindow];
    NSInteger retVal = [NSApp runModalForWindow:theModalWindow];
    [theModalWindow close];
    //continue and do somethin according the value in retVal
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}

В этом случае theModalWindow находится в своем собственном nib-файле и имеетNSObject в нем, который имеет дело с кнопкой ОК и Отмена, чтобы отклонить theWindow, в качестве примера вот обратный вызов кнопки отмены:

-(IBAction)cancelButton:(id)sender
{
    [NSApp stopModalWithCode:errAuthorizationCanceled];
}

Последняя строка в методе showMyModalWindow:, кажется, то, что нужно вмой случай, отправив приложение вперед ... Надеюсь, что это будет полезно!

Тодд.

...