2

Macアプリのメニューバーにアイコンを表示したいのですが、アイコンをクリックするとメニューが表示されます。メニューにさらに多くのエントリがありますが、Spotlightの場合と同様に、ユニバーサルテキスト入力フィールドとして一番上の行を表示したいと思います。

http://dl.dropbox.com/u/3943878/_mine/Screen%20shot%202011-07-16%20at%2012.29.18.png

そのようなフィールドをに追加することは可能NSMenuですか?それとも、パネルタイプのウィンドウとして実行する必要がありますか?

4

3 に答える 3

3

xcode 4を使用している場合は、Interface Builderでカスタムビューを作成し、テキストフィールドなどを追加します。IBでは、オブジェクトライブラリから必要な数のアイテムを含む「メニュー」もドラッグアンドドロップします。次に、テキストフィールド(この場合は一番上になります)に作成するメニュー項目をCtrlキーを押しながらクリックし、カスタムビューにドラッグして、[表示]を選択します。これで、メニューを開くと、そのスペースにメニュー項目を表示する代わりに、カスタムビューにあったものがすべて表示されます。

編集:あなたのコメントに関しては、ここにあなたがすべきことはあります。アシスタントエディタビューを開き、メニューから使用するヘッダーファイルにCtrlキーを押しながらクリックして、メニューをアウトレットにします。ここで、メニューが開くたびに実行されるメソッドを作成するだけです。便利なことに、アップルはすでにこれを作成しています。これはmenuWillOpenと呼ばれます。

- (void)menuWillOpen: nameOfYourMenu{

[self performSelector:@selector(methodExecutedWhenMenuIsClicked) withObject:nil afterDelay:0.0 inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];

0での遅延はすぐに発生します。メニューが開いている間でもメニューが更新されるように、コモンモードの実行ループで実行する必要があります。ここで、を作成しmethodExecutedWhenMenuIsClickedて設定し、テキストフィールドが応答するようにします。

- (void)methodExecutedWhenMenuIsClicked{

[[yourTextfiled window] makeFirstResponder:yourTextField];
于 2011-07-17T00:58:35.513 に答える
2

を使用して、メニューに任意のビューを配置できます-[NSMenuItem setView:]。NSMenuItem.hの長いコメントと、アプリケーションメニューおよびポップアップリストプログラミングトピックのメニューのビューのセクションを参照してください。

于 2011-07-16T11:37:10.443 に答える
0

あなたはおそらくかなり苦労するでしょう。同じことを試してみましたが、Ahrumanが参照しているアプリケーションメニューのメニューのビューポップアップリストプログラミングトピックのドキュメントを読んで、次のことがわかりました。

メニュー項目のビューは、通常どおりすべてのマウスイベントを受け取ることができますが、キーボードイベントはサポートされていません。「非スティッキー」メニュー追跡中(つまり、マウスボタンを押したままメニューを操作するとき)、メニュー項目のビューはmouseDragged:イベントを受け取ります。

私たちはSOLだと思います。どうやらSpotlightは代わりにフチなしウィンドウをポップアップします。

于 2011-09-21T05:57:41.830 に答える