【问题标题】:Completion handler never called for NSSavePanel beginWithCompletionHandler完成处理程序从未调用 NSSavePanel beginWithCompletionHandler
【发布时间】:2011-03-28 07:54:32
【问题描述】:

当我使用beginWithCompletionHandler: 打开NSSavePanelNSOpenPanel 实例时,永远不会调用处理程序。相反,我看到面板出现了几分之一秒,然后它又消失了,没有让用户选择文件。当我用runModal 打开面板时,它工作得很好。代码如下:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

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

这里有什么我遗漏的吗?

谢谢,马克

【问题讨论】:

    标签: cocoa nsopenpanel nssavepanel


    【解决方案1】:

    发现问题:在上面的代码中,savePanel 实例在周围的方法一结束就被自动释放。这会导致面板消失。解决方案是保持面板引用,直到调用完成块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多