前の質問への回答で説明されている手法を使用して実装されたマルチ ウィンドウ Cocoa アプリがあります。
すべて正常に動作しますが、最初のウィンドウが表示された後に開いたウィンドウが前面に表示されますが、その状態はアクティブではありません (すべてグレー表示)。それらをアクティブなウィンドウにするには、フレーム内を明示的にクリックする必要があります。
これまでの私のチェック:
- 試してみまし
makeKeyAndOrderFront:
たが、違いはありません。 - NIB のファイル所有者は、ウィンドウの対応するコントローラ クラスに設定されます。
- 各コントローラーのインスタンスが、実際には対応するウィンドウの所有者であることをデバッガーで確認できます。
- NSThread によって提案された解決策は、ウィンドウ キー ウィンドウを作成しません。
- ウィンドウは NSWindow のインスタンスですが、メソッド
canBecomeKeyWindow
は戻ります。NO
- ウィンドウにはタイトル バーがあり、サイズ変更可能です。
後続のウィンドウをアクティブな状態で表示するにはどうすればよいですか?
編集:
andでサブクラス化NSWindow
しSecondaryWindow
、オーバーライドcanBecomeKeyWindow
して return にしましたYES
。の新しく作成したサブクラスを使用するために、XIB に変更しましたNSWindow
。デバッガーでコードをステップ実行しましたが、それでもウィンドウがキー ウィンドウになりません。