2

前の質問への回答で説明されている手法を使用して実装されたマルチ ウィンドウ Cocoa アプリがあります。

すべて正常に動作しますが、最初のウィンドウが表示された後に開いたウィンドウが前面に表示されますが、その状態はアクティブではありません (すべてグレー表示)。それらをアクティブなウィンドウにするには、フレーム内を明示的にクリックする必要があります。

これまでの私のチェック:

  • 試してみましmakeKeyAndOrderFront:たが、違いはありません。
  • NIB のファイル所有者は、ウィンドウの対応するコントローラ クラスに設定されます。
  • 各コントローラーのインスタンスが、実際には対応するウィンドウの所有者であることをデバッガーで確認できます。
  • NSThread によって提案された解決策は、ウィンドウ キー ウィンドウを作成しません。
  • ウィンドウは NSWindow のインスタンスですが、メソッドcanBecomeKeyWindowは戻ります。NO
  • ウィンドウにはタイトル バーがあり、サイズ変更可能です。

後続のウィンドウをアクティブな状態で表示するにはどうすればよいですか?

編集:

andでサブクラス化NSWindowSecondaryWindow、オーバーライドcanBecomeKeyWindowして return にしましたYES。の新しく作成したサブクラスを使用するために、XIB に変更しましたNSWindow。デバッガーでコードをステップ実行しましたが、それでもウィンドウがキー ウィンドウになりません。

4

1 に答える 1

0

これを試して

[previousWindow orderBack];
[previousWindow resignKeyWindow];
[newWindow orderFront];
[newWindow makeKeyWindow];
  • ウィンドウにタイトルバーまたはサイズ変更バーがある場合、ウィンドウはキーウィンドウになる可能性があります。

アプリケーションウィンドウにタイトルバーまたはサイズ変更ウィンドウがない場合、それをキーウィンドウにすることはできません。

于 2011-10-12T18:51:07.827 に答える