Приложение зависло на runModalForWindow - PullRequest
3 голосов
/ 03 ноября 2011

Я пытаюсь отобразить модальное диалоговое окно поверх моего приложения, но оно закрывает главное окно приложения, когда оно закрывается.Вот мой код:

TutorialWindowController* pTutorialController = [[TutorialWindowController alloc] initWithWindowNibName:@"TutorialWindow"];
NSWindow* pTutorialWindow = [pTutorialController window];
DDLogInfo(@"Tutorial window opening...");
[NSApp runModalForWindow: pTutorialWindow];
DDLogInfo(@"Tutorial window closed!"); // CODE NEVER GETS HERE
[NSApp endSheet: pTutorialWindow];
[pTutorialWindow orderOut: self];

В модальном диалоговом окне кнопка «Закрыть» запускается следующим образом:

- (IBAction)closeButtonPressed:(id)sender {
    [NSApp stopModal];
}

Модальное диалоговое окно отображается нормально.Однако, когда я нажимаю кнопку «Закрыть», диалоговое окно исчезает, и главное окно моего приложения не отвечает.Я слышу стук каждый раз, когда пытаюсь щелкнуть.Я почти уверен, что это потому, что код никогда не продолжается после runModalForWindow.То же самое происходит, если я закрываю модальный диалект с помощью красного X.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 09 октября 2016

Вы должны сначала позвонить [pTutorialWindow orderOut:nil].

0 голосов
/ 08 августа 2018

Не уверен насчет обработчика closeButtonPressed. Но попробуйте добавить к делегату:

- (void) windowWillClose:(NSNotification *)notification
{
    // ...
    // In there, you should verify that you are calling:
    [NSApp stopModal]
}

Добавление вызова stopModal решило проблему для меня.

0 голосов
/ 04 ноября 2012

После заказа учебного окна, попробуйте сделать

  [window makeKeyAndOrderFront:self];

в вашем главном окне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...