0

ココア アプリをパスワードで保護する機能を実装しようとしています。したがって、私の AppDelegate では、パスワードがウィンドウに正しく入力された場合、NSApp の runModelforWindow メソッドを呼び出してメイン アプリ ウィンドウを表示します。

ユーザーがパスワードを変更できるようにする設定を除いて、それは正常に機能します。つまり、ユーザーからのハッキングを防ぐために、パスワードが正しく入力されるまでメイン メニューを非表示にする必要があります。

removeItemAtIndex を使用して特定のメニュー項目を削除したり、設定ウィンドウを表示するメソッドを呼び出すようにターゲット アクションをプログラムで設定したりしたくありません。代わりに、[NSApp mainMenu] を一時的に非表示にしたいと考えています。私はそれを検索しましたが、それを非表示にするための setHidden:YES のようなメソッドが見つからないようです。

[[NSApp mainMenu] cancelTracking] を試しましたが、うまくいきません

これを行う簡単な方法はありますか?

4

3 に答える 3

2

NSAppのメソッドを使用して-setPresentationOptions:、メニュー バーや Dock など、標準の OS UI の多くの部分を表示または非表示にすることができます。メニュー バーと Dock の両方を一緒に非表示にする必要があることに注意してください。

/* Hide */
[NSApp setPresentationOptions:[NSApp presentationOptions] |
                               NSApplicationPresentationHideMenuBar |
                               NSApplicationPresentationHideDock];

/* Show */
[NSApp setPresentationOptions:[NSApp presentationOptions] ^
                               NSApplicationPresentationHideMenuBar ^ 
                               NSApplicationPresentationHideDock];

ただし、これはかなり破壊的な UI エクスペリエンスです。パスワード ダイアログが画面に表示されている間は、ユーザーにアクセスさせたくないメニュー項目や UI 要素を無効にすることを検討してください。

于 2013-04-19T21:45:10.500 に答える
0

残念ながら、メイン メニューを非表示にする簡単な方法はありません。常に表示されるか、常に非表示になります (info.plist フラグによって異なります)。ドックアイコンも同様。これについては、LSUIElement を参照してください。このメニューが最初に非表示のときに表示するトリックがありますが、実行時に非表示/表示する良い方法はありません。

于 2013-04-19T20:50:57.857 に答える