2016-06-12 11 views
4

NSPanelには、HUDパネル用の「非アクティブ化」オプションがあります。 NSWindowで同じ機能を使用したいと思っています。つまり、ウィンドウがクリックを受け入れるようにしたいのですが、アクティブなアプリが何であってもフォーカスを取らないようにしたいのです(これはウィンドウをクリックする前にアクティブだったアプリですapp - この場合はSketch)。NSWindowでNSPanelの "非アクティブ化"スタイル機能を使用する方法はありますか?

私はNSWindowサブクラスを作成し、NOからcanBecomeMainWindowcanBecomeKeyWindowを設定しようとしたが、それはしていないように見える作業-Iは、これらの設定は、同じアプリ内窓に適用されるためだと思います。

私がここでやろうとしているのは、this flickeringを防ぐことです。私はAlfredのようなアプリがそうしているように、これが実行可能であると確信しています。

+0

こんにちはエリオットとようこそ。あなたが行ったこととあなたの問題がどこにあるのかを実証するために、コードのスニペットを挿入して質問をすると、それはより多くのユーザーがあなたの質問を詳細に研究し、あなたに答えを提供するようになります。 – Patrick

+0

なぜ 'NSPanel'を使わないのですか? **は**窓です。 'NSWindow'でできることは何でも、あなたは' NSPanel'でもやります。デフォルトの動作を変更するメソッドやプロパティはいくつかありますが、オーバーライドを使用してそれらを変更することができます。 –

+0

@KenThomases返信Kenに感謝します。私がNSPanelで遭遇した問題は、ウィンドウ全体を暗くするのではなく、NSWindowTitleHiddenを設定しようとしていました。私の 'NSWindow'では、これらの外観設定と、次に' NSVisualEffectView'が明に設定されています: 'self.window.styleMask = self.window.styleMask | NSFullSizeContentViewWindowMask; self.window.titleVisibility = NSWindowTitleHidden; self.window.titlebarAppearsTransparent = YES; ' –

答えて

0

質問に正確な答えはありませんが、実際にNSPanelを表示させるには、NSVisualEffectViewをビューコントローラに追加し、それを明示する必要があります。

関連する問題