Обработчик завершения никогда не вызывал для 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 автоматически освобождается, как только завершается окружающий метод. Это заставляет панель исчезнуть. Решение состоит в том, чтобы удерживать ссылку на панель до вызова блока завершения.