2016-01-21 8 views
6

ステータスバー項目に表示されるポップオーバーを持つアプリがあります。問題は、フルスクリーンのアプリを使っているときにアイコンをクリックしたときに、メニューバーからマウスを離してポップアップ内の何かをクリックすると、メニューバーが上に移動し、ポップアップも移動します。気に障る。ポップオーバーが開いているときにメニューバーが動かないようにするにはどうすればよいですか?

誰もがこれを解決する方法を知っていますか?私はポップアップに目に見えないメニューをつけてみましたが、メニューを見えなくすることはできません。

enter image description here

+0

ご参考までに、全画面表示のときにこの問題が発生するだけでなく、 10.11では常にメニューバーを自動的に非表示にすることができます: http://www.tekrevue.com/tip/hide-menu-bar-os-x-el-capitan/ – cacau

+0

このトピックをチェックしてみるとよいでしょうあなたの問題のきれいな解決策のように: http://stackoverflow.com/questions/35008501/detect-if-menu-bar-is-hidden-or-visible – Jay

答えて

1

親ウィンドウがステータス項目ウィンドウであるため、ポップオーバーウィンドウが移動しています。親ウィンドウが移動すると、子ウィンドウも移動します。 (私はこれを調査する前に、私もココアは、親と子のウィンドウを持っていた知らなかった。)私はすぐにポップオーバー表示した後、このコードの問題を解決しました:

NSWindow *popoverWindow = self.popup.contentViewController.view.window; 
[popoverWindow.parentWindow removeChildWindow:popoverWindow]; 

さて、メニューバーがまだ上に移動しますが、少なくともポップアップは同じ場所にとどまります。

+1

自分が所有していない窓でうんざりしていると、もし私があなただったら、そのルートを下りません。今後のOSリリース(またはあなたがそれをテストしたOSよりも古いバージョン)で問題を起こしたり、壊れやすい経験から、 – cacau

+0

@cacau良いアイデアはありますか? – tbodt

0

スーパーハックアプローチ:

カスタムウィンドウをいくつかの超高窓のレベルで行うために、私は周りに私のマウスを振るところ明確にするため

スクリーンショットは、迷惑な部分がありますメニューバーの上に表示され、必要に応じてマウスクリックをキャッチして処理/ブロックする透明なカスタムビューを新しいウィンドウに追加します。

または:

ポップオーバーを表示および追跡/ NSWindowWillMoveNotification/NSWindowDidMoveNotification処理するために使用されるウィンドウのインスタンスを取得します。

+0

私の問題は何か、明確にするためにスクリーンショットを追加しました。 – tbodt

+0

ああ、そうです!メニューバーが非表示になったときに送信される通知はありますか?何でも聞いてみて、特に https://developer.apple.com/library/mac/documentation/General/Conceptual/MOSXAppProgrammingGuide/FullScreenApp/FullScreenAppに記載されているものを見てください。html – cacau

+0

送信されたローカル通知がある場合、それらはフルスクリーンのプログラムになります。分散通知があるかもしれませんが、どうすればいいですか?ポップアップを非表示にしますか?そのため、ポップアップをフルスクリーンモードで使用することは不可能になります。 – tbodt

1

どちらかCarbon eventsを使用するか、メニューバー(タイプNSStatusBarWindowの窓)に起こって物事を監視:タイプの

通知

  • NSWindowDidChangeOcclusionStateNotification
  • NSWindowDidMoveNotification
  • NSWindowWillCloseNotification
  • NSWindowDidCloseNotification
  • クラス NSStatusBarWindowの対象と

あなたに示すか、適切な取り扱いを追加するために、隠しメニューバーに関する十分な情報を与える必要があります。

+1

そして、適切な取り扱いは何ですか?難しい部分は、ステータス項目が移動したときに見つからないので、ポップアップが動かないようにしています。 – tbodt

関連する問題