プロジェクトで NSSavePanel に問題があったため、問題を特定するために、デフォルト ウィンドウの viewDidLoad に NSSavePanel コードのみを含むテスト プロジェクトを作成しました。
テスト プロジェクト
NSSavePanel を表示するために使用したコード:
dispatch_async(dispatch_get_main_queue()) {
let savePanel = NSSavePanel()
savePanel.nameFieldStringValue = "test.png"
let result = savePanel.runModal()
if result == NSFileHandlingPanelOKButton {
print("You hit that OK button.")
}
}
表示される保存パネルは次のようになります。
本当のプロジェクト
既存のアプリケーションで同じコード (画像ファイル名を除く)を使用すると、次のような NSSavePanel が得られます。
主な違い:
- 表示されるウィンドウがアクティブにならない
- タイトル バーは、ウィンドウの残りの部分から分離されていません
- ボタンでもテキストフィールドでもない何かをクリックするたびに、まるでドラッグしようとしているかのように、ウィンドウが画面を数ピクセル下にジャンプします。
ここで一体何が起きているのでしょうか?明らかに、問題はコードのスニペットだけではありません。誰がそれが何であるか知っていますか?