問題タブ [nsmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1764 参照

cocoa - NSMenu のサイズをコンテンツに合わせて動的に調整するにはどうすればよいですか?

このような標準の NSMenu があります

初期メニュー

このメニューは、次のコードで作成されました。

ご覧のとおり、メニューの各オプションに「重複」項目があります。このアイテムのコピーはoption、メニューが表示されているときに (alt) キーを押すと表示されます。

問題は、このメニューのタイトルが元のサイズよりも大きく、元のサイズに戻らないため、代替メニュー項目を表示している間にメニューのサイズが変更され、次のようになることです:

ここに画像の説明を入力

どうすれば修正できますか?ありがとう

0 投票する
1 に答える
385 参照

macos-carbon - カスタム ビューの上の NSMenuItem ギャップを削除する方法

次の投稿で説明されているものを探していました。

NSMenuItem カスタム ビューの上のギャップ。

ステータス バー アイテムの NSMenu のリバース エンジニアリング

ピエール・バーナード提供のカーボンコードを試してみた

最初は、他のエラーと同じ「EXC_BAD_ACCESS on the line InstallControlEventHandler」というエラーが発生していました。私はコードをたくさんいじって、偶然解決策を見つけました。

InstallControlEventHandler 関数呼び出しを HIViewInstallEventHandler に置き換えたところ、すべて正常に動作しています。

これが他の人に役立つことを願っています。さらに説明が必要な場合はお知らせください。

素晴らしいコードを提供してくれた Pierre Bernard に感謝します。

ありがとう

0 投票する
1 に答える
580 参照

nswindow - MAAttachedWindowをNSMenuのように動作させる

ユーザーがMAAttachedWindowの外側をクリックしたときにMAAttachedWindowを非表示にする方法について、このサイトの投稿を読みました。この投稿のように、私はstatusItemと一緒にMAAttachedWindowを使用します。 外側をクリックすると、MAAttachedWindowを非表示にします。キー状態を終了するときにウィンドウを非表示にする必要があると表示されます。

しかし、ウィンドウのキーステータスの代わりに他のアプローチがあるのではないかと思います。キーステータスを操作すると、別の問題が追加されます。ウィンドウがキー状態を辞任したときに通知を受け取るには、他のすべてのアプリケーションが以前に無視されている必要があります(つまり、他のすべてのアプリケーションのウィンドウが非アクティブになり、次の場合に色が失われます。 statusMenuが表示されます。これは[NSAppactivateIgnoringOtherApps:YES]によって実行されます。Spotlight-またはAirport-statusItemを使用する場合、これは通常は発生しません。ユーザーはこれを期待していません。

MAAttachedWindowを実際のNSMenuのように動作させる人はいますか?この問題を発生させずにキーステートを操作する方法はまだありますか?ヒントありがとうございます。

0 投票する
1 に答える
15178 参照

cocoa - プログラムで NSMenuItems を含む NSMenu を作成しますか?

まず、この質問はおそらくすでに尋ねられていることを指摘しておきたいと思います。彼らからの回答が見つかりませんでした。

だから、私はプログラムでNSMenuとNSMenuItemをメインバーに作成しようとしているので、fe. NSMenu は File で、その中に 3 つの NSMenuItem、New、Open、Save があります。

しかし、何も機能していません。現在私が持っているものは次のとおりです。

しかし、何も起こりません。fileMenu を使用する必要があることをアプリケーションに伝える必要があると確信していますが、どうすればそれを行うことができますか?それが問題ではない場合、何が問題なのでしょうか? 私はこのようなことにはかなり慣れていませんが、学ぶことに興味があるので、どんなヒントでも何もないよりはましです!

0 投票する
1 に答える
981 参照

cocoa - NSMenuから動的NSMenuItemを削除するタイミング

いくつかの動的アイテムを含むNSMenuがあります。これらのアイテムはNSMenuDelegateのmenuNeedsUpdateメソッドで作成され、それぞれにrepresentedObjectが割り当てられます。オブジェクトグラフをトリミングし、メニューを閉じたときにすべての動的アイテムを削除して(そしてメニューを再度開いたときにそれらを再作成することで)少しのメモリを取り戻すことを望んでいます。私が抱えている問題は、これをどこでどのように処理すべきかを正確に知ることです。

ドキュメントには、NSMenuのmenuDidCloseはメニューの内容を更新するのに適した場所ではないと記載されています。NSMenuDidEndTrackingNotificationをリッスンする通知を設定し、NSMenuのremoveItem:メソッドを呼び出して、その時点で動的アイテムを削除しています。これはこの状況を処理する正しい方法ですか?

最後に、NSMenuItemでremoveItemを呼び出すと、それに割り当てられている可能性のあるカスタムビュー、およびサブメニューが正しく無効になることを保証できますか?

0 投票する
1 に答える
2512 参照

cocoa - サブメニューからNSMenuItemを取得するにはどうすればよいですか?

最も外側のメニューへの参照がありますが、サブメニューにネストされているNSMenuItemへの参照を取得しようとしています。

file_menuは明らかにサブメニュー(NSMenu)ですが、itemarrayからアイテムを取得する方法がわかりません。NSMenuにキャストして、itemWithTitleをセレクターとして実行してみましたが運が悪かったです。

どうすれば最初のNSMenuItemを取得できますか?

0 投票する
1 に答える
1241 参照

objective-c - NSMenuItems を使用して NSArray から NSMenu を生成する - 別の提案が必要

だから私は次のコードを持っています:

これにより、NSArray からサブメニュー項目が動的に生成され、(特定のブラウザーで) 選択された選択に基づいて URL を開くことができます。

私の質問は、これはうまくいくようですが、NSMenu supportLinkItem の画像を設定したいのですが、.h ファイルは次のようになります。

そして、アウトレットはサブメニュー項目にリンクされています。(parent? -terminology?) を NSmenu として作成したため、(void)setImage:(NSImage *)menuImage メソッドとしてこれにアクセスすることはできません。 NSMenuitem ではありません。技術的には、「サブメニュー項目」を NSMenu ではなく NSMenuItem であるインターフェイスビルダーにドラッグすると、メニューの画像を設定できないことを除いて、コードは問題なく動作します。これはいけないと思いますが、おそらく NSArray から読み取って一連のサブメニューを作成する同様の方法があります。

0 投票する
1 に答える
476 参照

mouseover - NSMenuのマウスオーバーイベント

NSMenu と NSStatusItem を使用して、この方法でステータス バーにカスタム メニューを長時間表示しました。

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:18] retain]; [statusItem setImage:[NSImage imageNamed:@"myIcon"]]; [statusItem setMenu:myMenu]; [statusItem setHighlightMode:NO]; ...

画像アイコンをクリックすると正常に動作します。しかし、空港メニュー、電源メニュー、言語メニュー、日付/時刻メニューなど、ステータスバーにあるアップルのメニューは、マウスを動かすだけで簡単にトリガーできることに気付きました。マウスが上を歩くと、それらはすべて自動的にポップアップします。彼らはどうやってそれを手に入れたのですか?

「mouseEntered」イベントでNSViewの「add tracking rect」を確認しましたが、思ったほど難しくありません。

何かアドバイス?

0 投票する
1 に答える
2395 参照

objective-c - 動的に作成された NSMenu を NSMenuItems で更新する

保持したい 3 つの静的 NSMenuItems を持つ NSMenu があり、その後の束は動的に生成され、ユーザーがメニュー アイコンをクリックするたびに削除して再読み込みする必要があります。

ポップアウトするプロセスのリストを作成しようとしていますが、ポップアウトを開くたびに NSMenuItems がクリアされません。ファンキーな方法で追加するだけです。for ループをログに記録すると、ループが完了していないことがわかります。理由はありますか?

0 投票する
1 に答える
713 参照

xcode - さまざまなNSWindowControllerの印刷メニュー項目の有効化/無効化

[印刷]メニュー項目を変更して、-printWindow:メッセージをFirst Responderに送信し、2つのウィンドウコントローラー(プライマリウィンドウとセカンダリウィンドウ)でそのメソッドを定義しました。私のプライマリウィンドウでは、すべてが正常に機能します。ただし、2番目のウィンドウにフォーカスすると、[印刷]メニュー項目が自動的に無効になります。

私の実装:

メニュー項目の自動検証を理解している場合は、最初のレスポンダー階層を上って、選択したセレクターに応答するオブジェクトを探す必要があります...これは私のSecondaryWindowControllerであるはずですが、メニュー項目は無効になっています。私が間違っていることについて何か考えはありますか?