Обработчик завершения никогда не вызывал для NSSavePanel beginWithCompletionHandler - PullRequest
3 голосов
/ 28 марта 2011

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

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

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

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

Спасибо, Марк

1 Ответ

3 голосов
/ 28 марта 2011

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

...