バックグラウンド
-beginWithCompletionHandler:
NSOpenPanel を呼び出すと、使用者が開くボタンを押してから約 1 秒後にユーザー インターフェイスが処理されます。
2 つのメッセージ エラー メッセージが出力されます。
*警告: クラス NSWindow のメソッド userSpaceScaleFactor は、10.7 以降では非推奨です。新しいアプリケーションでは使用しないでください。代わりに convertRectToBacking: を使用してください。
と、
WindowServer[90]: CGXDisableUpdate: UI の更新は、アプリケーション「OpenPanelTest」によって 1.00 秒以上強制的に無効にされました。サーバーはそれらを再度有効にしました。
解決策は、代わりにモーダル ウィンドウを実行することのようです (ただし、これは実際には一般的な解決策ではありません!) -beginSheetModalForWindow: completionHandler:
、警告 'userSpaceScaleFactor...' が出力され、ユーザー インターフェイスがハングしなくなりました。
私の質問
これはバグですか、それとも何か間違ったことをしているのですか、それとも Xcode の設定が間違っていますか? サンドボックスが有効になっておらず、コード署名も有効になっていません。これは、プレーンなアプリケーションとドキュメントベースのアプリケーションの両方で同じように動作します。Appleに提出することをお勧めしますか? ほとんどすべてのアプリで Open Panels が使用されているため、Google がこれについて事実上何も見つけていないのは奇妙だと思います。
アップデート
サンプル コードは github ( https://github.com/danieljfarrell/AppTest-NSOpenPanel ) で入手できます。