問題タブ [nsmenuitem]

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 投票する
4 に答える
2073 参照

objective-c - クリック後にNSMenuItemからハイライトを削除しますか?

NSMenuItemのサブクラス(NSStatusMenuにあります)にカスタムビューを追加しました。これは、デフォルトでは、青/灰色の背景で「ハイライト」されないことを意味します。

次のコードを使用してこれを実装しました。

メニュー項目はうまく強調表示され、各項目をクリックすることもできます。ただし、それらをクリックすると、メニューを再度開いたときにisHighlighted状態が維持されているように見えます。

クリックすると、次にメニューを開いたときに強調表示された状態が削除されるように変更する方法はありますか?

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

objective-c - NSMenuItem の NSView がサブメニューで強調表示されない

サブクラスがいっぱいNSStatusItem表示される があります。サブクラスでオーバーライドしてハイライトを実装すると、ルート メニューではすべて正常に動作しますが、ルート メニューのサブメニューでは何らかの理由で動作しません。サブクラスにいくつかのステートメントを入れましたが、サブメニューのビューに対しても呼び出されていないことに気付きました。何か案は?NSMenuNSViewdrawRect:NSViewNSMenuNSLogNSViewdrawRect:

drawRect:ビューを強調表示するために使用しているコードを投稿できますが、呼び出されていないため、必要だとは思いません。他に役立つコードがあれば教えてください。

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

objective-c - NSMenuItem 内に NSView を持つ偽の NSWindow

始める前に、これは長い道のりのように思えることを知っていると言わなければなりませんが、試してみる価値があると思いました.

私が現在取り組んでいるアプリの 1 つは、Mac ステータスバー アプリです。メニューバーに NSStatusItem があり、クリックするとポップオーバーの外観を持つカスタム ウィンドウが表示されます (iPad のように、または Mac の Fantastical のように)。ビューは、そのウィンドウの背景色にクリア カラーを設定しています。ただし、下の写真でわかるように、これはまだうまくいきません。

ここに画像の説明を入力

  1. アイテムの上下にまだ小さな白い細い線があります
  2. クリア部分が不鮮明で、ぼかしフィルターをかけているようです

それ以外は、素晴らしく機能します。他の誰かがこれまでにこのようなことを試みたことがあるかどうかを知りませんでしたが、これが機能しない唯一の原因であると思われるこれら2つの問題を克服する方法を見つけました.

これを行う方法がない場合は、NSStatusItem のカスタム ビューを使用して画面上の座標を取得し、自分のウィンドウを NSStatusItem の下に配置する必要があります。

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

cocoa - ホスト メニューが表示されている間に NSMenuItem を更新する

進行状況を表示するために更新する必要があるNSMenuItemものがあります(タイムマシンがバックアップで行うように)。問題は、そのtitle上に新しいものを設定してもNSMenuItemtitle変更されないことです。

メニューを閉じて再度開くと実際には変化していますが、ユーザーが見ている間に更新したいと考えています。

また、アイテムを削除して再挿入しようとしましたが、結果はありませんでした。

ポインタはありますか?

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

objective-c - 再度切り替えるまで NSStatusItem にフォーカスし続ける方法

NSStatusItem を使用するアプリを構築しています。クリックすると NSStatusItem が開き、ユーザーが NSStatusItem を再度クリックするまで開いたままにしたいです。現時点では、メニューが開きますが、メニューから離れたり、別のアプリをクリックしたりすると、NSStatusItem はフォーカスを失います。ユーザーがクリックして閉じるまで、NSStatusItemのメニューを開いたままにしておきます。これまでのところ、NSStatusItem を作成するためのコードは次のとおりです。ありがとう

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 に答える
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を呼び出すと、それに割り当てられている可能性のあるカスタムビュー、およびサブメニューが正しく無効になることを保証できますか?