2016-06-02 3 views
0

私はココアのMac開発に新しいです、今、私は特定の時間の後にいくつかのサーバーヒットを持つMacアプリケーションを開発しています。ヒットが必要なデータを取得した場合、同等のウィンドウを表示し、ウィンドウを表示する必要があります。[myWindow showWindow:self]メソッドを使用しています。それは、希望のウィンドウを表示し、私の目に見えるウィンドウにキーウィンドウを設定するのは、myWindowです。どのようにココアのフォーカスされたウィンドウを知るために、どのように希望のウィンドウに設定する?

これまでのところ、すべてうまくいきましたが、問題は、ユーザーが任意のウィンドウで作業を開始し、他のいくつかの子ウィンドウを開くと、残念ながら私のショーウィンドウが呼び出され、作業ウィンドウのフォーカスが他のウィンドウに移動したとします。

いくつかの検索の結果、[[NSApplication sharedApplication] keyWindow]代理人にアクセスして集中ウィンドウを得ることができたことがわかりました。私はこれとこのウィンドウがキーウィンドウ上にあるときに、 。

しかし、問題は解決されません。今私は私の現在の作業ウィンドウにkeyWindowを設定するのが最善の選択肢だと思う。

私は何ができ、どのように強制的にウィンドウをキーウィンドウとして設定できるのか教えてください。

お願いします。 ありがとうございます。

+0

私は投票の理由を知っているかもしれません。 –

答えて

1

あなたの質問が正しく理解されている場合は、サーバーからの入力を受け取っても、現在のメインまたはキーウィンドウの前に移動せずにウィンドウを前方に移動したいと考えています。

使用している方法は、showWindow:に属し、NSWindowControllerに属していて、どちらもウィンドウを表示してキーにします。

あなたが見なければならないのは、ウィンドウレベルを管理するためのの方法です。orderFront:などです。

特に、orderWindow:relativeTo:を使用すると、別のウィンドウの前後にウィンドウを配置することができます。たとえば:

[<window> orderWindow:NSWindowBelow 
      relativeTo:NSApp.keyWindow.windowNumber]; 

はすぐに現在のキーのウィンドウの背後にある、とキーウィンドウの背後にある他のウィンドウの手前にあるように、ウィンドウを移動します。

HTH

関連する問題