3

NSSavePanelorNSOpenPanelインスタンスを開いたときにbeginWithCompletionHandler:、ハンドラーが呼び出されることはありません。代わりに、ユーザーにファイルを選択させずにパネルが消える前に、パネルが一瞬表示されます。パネルを開くと、runModal問題なく動作します。ここにコード:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

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

ここに欠けているものはありますか?

ありがとう、マーク

4

1 に答える 1

3

問題が見つかりました: 上記のコードでは、周囲のメソッドが終了するとすぐに savePanel インスタンスが自動解放されます。これにより、パネルが消えます。解決策は、完了ブロックが呼び出されるまでパネル参照を保持することです。

于 2011-03-28T09:12:12.267 に答える