2017-09-03 3 views
1

どのように焦点を合わせてスポットライトを浮かべるのだろうと思っていましたが、別のウィンドウにはまだフォーカスがあります。macOSに焦点を当てずにウィンドウを表示する方法は?

enter image description here

私は簡単window?.level = Int(CGWindowLevelForKey(.maximumWindow))と他のすべてのウィンドウの上にフローティングウィンドウを作ることができますが、私は2つの窓があり、焦点の両方を任せることはできない、助けて!

ココアにShowWithoutActivatingのような機能はありますか?

+2

あなたは何を意味する「両方焦点を当てていますか」?それは可能ではありません。そうであれば、入力は両方のウィンドウに行き、非常に混乱し、面倒です。 Spotlightウィンドウは、フォーカスを絶対的に「盗む」。 (私はそれがユーザーによって要求されて以来、私は本当にそれを "盗む"とは思わないでしょう) –

答えて

4

私はこれをちょっとやって遊んできました。フロントウィンドウが最前面のアプリケーションと同じプロセスでない場合、この効果が出るようです。これはSpotlightがおそらく行っていると思われるものです。私はこれを次のようにすることができます:

  1. 私のアプリのInfo.plistでLSUIElementをYESに設定してください。

  2. Interface Builderでは、ウィンドウのクラスをNSPanelに設定し、属性インスペクタで「非アクティブ化」をチェックし、アイデンティティインスペクタのユーザ定義ランタイムアトリビュートで「isFloatingPanel」をYESに設定します。他のアプリケーションが前面に表示されていることをいくつかの時間の間に

  3. (私はちょうど自分自身に前にいくつかの他のアプリを開くと、テキストフィールドを選択するための時間を与えるために5秒の遅延を使用)、上orderFrontRegardless()続いmakeKeyAndOrderFront()を呼び出します窓。

私はこれを行うと、私は(まだXcodeのの「モジュール」フィールドに描かれたフォーカスリングを注意してください)、次を得る:

enter image description here

+0

ありがとう!それは私が欲しいものです。あなたの答えは非常に明確です。本当にあなたの助けに感謝します。 – Seven

関連する問題