当我使用 beginWithCompletionHandler:
打开 NSSavePanel
或 NSOpenPanel
实例时,处理程序永远不会被调用。相反,我看到该面板出现了不到一秒钟,然后又消失了,并且不允许用户选择文件。当我使用 runModal 打开面板时,它工作得很好。代码如下:
NSSavePanel *savePanel = [NSSavePanel savePanel];
//[savePanel runModal]; // Works
[savePanel beginWithCompletionHandler:^(NSInteger result){
NSLog(@"DONE"); // Never called, dialog disappears right away
}];
我这里有什么遗漏的吗?
谢谢,马克
最佳答案
发现问题:在上面的代码中,一旦周围的方法结束,savePanel实例就会自动释放。这会导致面板消失。解决方案是保留面板引用,直到调用完成 block 为止。
关于cocoa - 完成处理程序从未调用 NSSavePanel beginWithCompletionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5456085/