2012-03-10 5 views
2

私は、NSSearchFieldの下に浮動小数のボーダーレス検索結果ウィンドウを実装しており、ユーザーのタイプとして検索結果を表示しています。 NSSearchFieldが適切なコマンド(上向き矢印、下向き矢印、Enterキー)をウィンドウ内のカスタム検索結果ビューに転送するので、NSWindowはキーである必要はありません。これにより、ユーザーは検索中にいつでも結果をナビゲートできます。これはすべて、1つのユースケースを除いて素晴らしい作品です。ユーザーがアプリ内の他の場所をクリックすると、簡単にウィンドウを閉じることができます。キーではないNSWindowを簡単に閉じるには?

私は通常、windowDidResignKey通知でこれを行いますが、ウィンドウが決して重要でないため、この場合は送信されません。この状況を簡単に処理する別の方法はありますか?私は単純に、検索フィールドがフォーカスを失ったとき(他の回の間)と呼ばれているNSSearchField、のデリゲートメソッドをcontrolTextDidEndEditing:を実装の下にロブの考え方の変化を使用して

-

- ソリューションと編集。検索フィールドがメインの親ウィンドウの最初のレスポンダでない場合は、検索結果ウィンドウを閉じます。

+0

それはサブクラス化を必要としないので、私の答えより優れた解決策です。 –

答えて

1

NSWindowをサブクラス化してmakeFirstResponder:をオーバーライドすると、最初のレスポンダが変更されるたびに、結果ウィンドウが開いていると結果ウィンドウが閉じられます。最初のレスポンダは、検索フィールドがアクティブな間は変更しないでください。検索フィールドのフィールドエディタがフォーカスを失った場合にのみ、ウィンドウを閉じる必要があります。

+0

あああ、検索フィールドの最初のレスポンダステータスはチケットです。ありがとう! –

関連する問題