当我使用NSSavePanel打开NSOpenPanelbeginWithCompletionHandler:实例时,永远不会调用处理程序。取而代之的是,我看到面板出现了不到一秒钟的时间,然后又消失了而又没有让用户选择文件。当我用runModal打开面板时,效果很好。这里的代码:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

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


我在这里想念什么吗?

谢谢马克

最佳答案

找到了问题:在上面的代码中,只要周围的方法结束,就会自动释放savePanel实例。这将导致面板消失。解决方案是保留面板参考,直到调用完成块。

关于cocoa - 完成处理程序从未要求过NSSavePanel beginWithCompletionHandler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5456085/

10-09 16:23