Обработчик завершения никогда не вызывал для NSSavePanel beginWithCompletionHandler

Когда я открываю NSSavePanel или же NSOpenPanel экземпляр с beginWithCompletionHandler: обработчик никогда не вызывается. Вместо этого я вижу, что панель появляется на долю секунды, прежде чем она снова исчезнет, ​​не давая пользователю выбрать файл. Когда я открываю панель с runModal это работает просто отлично. Вот код:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

    NSLog(@"DONE"); // Never called, dialog disappears right away
}];

Есть ли что-то, что я здесь скучаю?

Спасибо Марк

1 ответ

Решение

Обнаружена проблема: в приведенном выше коде экземпляр savePanel автоматически освобождается, как только завершается окружающий метод. Это заставляет панель исчезнуть. Решение состоит в том, чтобы удерживать ссылку на панель до вызова блока завершения.

Другие вопросы по тегам