私は、ウィンドウ(タブ)ごとに複数のドキュメントを持つNSDocumentベースのアプリケーションで作業しています。これは、ウィンドウのクローズを処理する必要があるため、クローズされる前にウィンドウに属するドキュメントを確認できることを意味します。これを行うために、私はstandardWindowButton:NSWindowCloseButton
を使用してNSWindowの閉じるボタンにアクセスし、このボタンのターゲット/アクションを標準の(そして私的な)_close:
メソッドの代わりに私のメソッドに設定しました。Snow Leopardのウィンドウクローズボタンハイジャック
これはLionでうまくいきますが、Snow Leopardでは問題が発生します。モーダルダイアログが表示されるたびに、閉じるボタンが期待どおりに無効になります。しかし、モーダルダイアログが終了すると、Snow Leopardでは閉じるボタンが再び有効になることはありません。私は[closeButton setEnabled:YES]
などを使用してプログラムでそれを再度有効にしようとしましたが、効果がないようです。私はこれがクローズボタンのターゲット/アクションを変更したときにのみ発生することを確認しました。
Snow Leopardでこの動作を回避する方法や、閉じるボタンをハイジャックする代替方法はありますか?ツールバーボタンの有効な状態を制御するのは何ですか?多分私はそこに何かを無効にすることができますか?
ダイアログを表示する前にターゲットとアクションを削除してダイアログが終了したら追加するとどうなりますか? –
私はそれを試してみたと思っていましたが、今私はそれを行い、それが動作するように見えます!ちょっと難しいですが、私の異なるモーダルダイアログのターゲット/アクションを追加したり削除したりするタイミングを正確に調べてください。ありがとう。 – krill