問題タブ [nsstatusitem]
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.
cocoa - 編集メニューのないダイアログでのCocoaキーボードショートカット
LSUIElement
メニューバーのステータス項目を表示するアプリケーションがあります。アプリケーションは、テキストフィールドを含むダイアログウィンドウを表示できます。
ユーザーがテキストフィールドを右クリック/コントロールクリックすると、切り取り、コピー、貼り付けなどを可能にするメニューが表示されます。ただし、標準のCommand-X、Command-C、およびCommand-Vキーボードショートカットは、分野。これは、私のアプリケーションがこれらのショートカットが定義された編集メニューを提供していないためだと思います。
Ship Some Codeブログで提案されているように、アプリケーションのメニューに[編集]メニュー項目を追加しようとしましたが、機能しませんでした。[編集]メニューのメニュー項目は使用できますが、キーボードショートカットは引き続き機能しません。
キーボードの処理をハックするいくつかの方法を想像できますが、これを機能させるための「推奨される」方法はありますか?
(アプリの詳細については、メニューバーのカウントダウンを参照してください。)
関連する質問:モーダルウィンドウでコピー/貼り付けが機能しない
objective-c - NSStatusItemの画面上の場所を取得する方法
NSStatusItem
macosxのココアについて質問があります。スニペットと呼ばれるMacアプリを見ると(http://snippetsapp.com/のムービーを参照)。ステータスバーアイコンをクリックすると、アイコンのすぐ下に完全に位置合わせされたビュー/パネルまたはウィンドウが表示されることがわかります。
NSWindow
私の質問は...このアプリのようにあなたを配置する場所への位置を計算する方法は?
私は以下を試しました:
- サブクラス
NSMenu
- メニューの最初の項目のビューポペリを設定します(機能しましたが十分です)
- これにアイコンの代わりにaddSubviewを使用すると機能し
NSStatusItem
ましたが、20pxより高くなることはできませんでした
cocoa - NSMenuItem のカスタム NSView がマウス イベントを受信しない
popUpStatusItemMenu を使用して NSStatusItem から NSMenu が飛び出しています。これらの NSMenuItem は一連の異なるリンクを示しており、それぞれが setAction: でターゲットの openLink: メソッドに接続されています。この配置は長い間うまく機能しています。ユーザーがメニューからリンクを選択すると、openLink: メソッドがそれを処理します。
残念ながら、私は最近、NSMenuItem の setView: メソッドを使用して、より洗練されたインターフェースを提供する実験を行うことにしました。基本的に、タイトルの設定をやめ、NSMenuItem を作成し、setView: を使用してカスタム ビューを表示しました。これは完全に機能し、メニュー項目は見栄えがよく、カスタム ビューが表示されます。
ただし、ユーザーがメニュー項目を選択してマウスを放すと、アクションは機能しなくなります (つまり、openLink: は呼び出されません)。setView: 呼び出しを単純にコメントアウトすると、アクションが再び機能します (もちろん、メニュー項目は空白ですが、アクションは適切に実行されます)。私の最初の質問は、ビューを設定すると NSMenuItem のアクションが中断される理由です。
問題ありません。カスタム ビューで mouseUp イベントを検出し、そこからアクション メソッドを呼び出すことで修正できると思いました。このメソッドをカスタム ビューに追加しました。
ダイスなし!このメソッドは呼び出されません。
ただし、トラッキング rect を設定して mouseEntered: イベントを受け取ることはできます。次のように、mouseEntered ルーチンにいくつかのテストを入れました。
そして、以下の回答を得ました。
これが問題ですか?「isKeyWindow ではない」? Apple のドキュメントには、「ユーザーがキー ウィンドウにないビューをクリックすると、デフォルトでウィンドウが前面に表示されてキーになりますが、マウス イベントはディスパッチされません」と記載されているため、おそらくこれは適切ではありません。しかし、これらのイベントを検出する方法が必要です。どうやって?
追加:
canBecomeKeyWindow が YES であるにもかかわらず、効果はありません。
cocoa - 画面上の NSStatusItem (ココア) の場所
以下のようなコードでその領域をクリックできるように、NSStatusItem の画面上の場所を取得しようとしています。ユーザーがホットキーを押してメニューを表示できるように、これを行っています。
場所を取得する方法を知っている人はいますか?, 私はアイデアを試して何日も探していて、いくつかのアイデアを見つけましたが、ヒョウ/ユキヒョウではうまくいかないようです.
NSStatusItem は、カスタム ビューではなく NSMenu を使用しています。
nsview - カスタム ビューを使用したカスタム NSStatusItem - NSWindow、NSView、カスタム NSMenuItem を使用しますか?
Spotlight、CoverSutra、およびそのタイプの他のアプリのように動作する LSUIElement アプリを作成しようとしています。NSWindow をポップアップするカスタム NSStatusItem を作成できましたが、問題は、現在フォーカスがあるアプリがカスタム NSWindow にフォーカスすることです。
私は Matt Gemmell の例 ( http://mattgemmell.com/2008/03/04/using-maattachedwindow-with-an-nsstatusitem )に基づいています。
たとえば、Safari で Spotlight アイコンをクリックすると、現在の Safari ウィンドウはグレー表示されず、フォーカスされたままになります。Spotlight で ESC を押すと、フォーカスが Safari ウィンドウに戻ります。
カスタム NSWindow でこれを行うことができませんでした。ウィンドウにフォーカスを戻すには、ウィンドウをクリックして戻す必要があります。
だから私はこれを達成するためにどのルートに行くべきか知りたいです。ソリューションは、カスタム NSMenuItem を持つ NSWindow、NSPanel、NSMenu ですか?
cocoa - LSUIElement が activateIgnoringOtherApps と一貫性のない動作をする
具体的には、テキスト フィールドのフォーカスに関して一貫性のない動作をします。
ステータス メニューをポップアップする LSUIElement があります。そのメニュー内には、テキスト フィールドを含むビューがあります。テキスト フィールドは選択可能である必要があります。必ずしもデフォルトで選択されるとは限りませんが、いずれかが選択されます。
ステータスアイテムがクリックされると、それがトリガーされます
* ステータス メニューの残りの半分は、それ自体が「バックグラウンドにある」と見なされているようで、クリックしてもテキスト フィールドにフォーカスを当てることができません。(ステータス アイテムのクリック トリガーは、NSLog があることで発生していることを知っています。)
これは Apple がこれらのステータス項目を処理する方法のバグですか、それとも activateIgnoringOtherApps の処理を誤っているのでしょうか?
※実際に別アプリ起動後の初回のみ失敗するようです。その後、正常に動作します。
完全なスニペット:
objective-c - Objective-C: NSStatusBar の右クリックと左クリック
ステータスバーアイコンの左クリックまたは右クリックを検出し、クリックされたマウスボタン (トラックパッド) に応じて何らかのアクションを実行する方法は?
私が使う:
statusBar アイコンを生成するには
cocoa - CALayer でネイティブに見える statusitem 背景を描画する方法
実際には、カスタム statusItemView で選択NSStatusItem
したオブジェクトの背景を描画したいと考えています。CALayer
しかしそれ以来
- (void)drawStatusBarBackgroundInRect:(NSRect)rect withHighlight:(BOOL)highlight
レイヤーでは動かない(?) backgroundColorプロパティで色を描画してみました。しかし、selectedMenuItemColor を RGB に変換しても、あまり役に立ちません。グラデーションなしでとてもシンプルに見えます。:-/
私はこのコードでに変換[NSColor selectedMenuItemColor]
しました:CGColorRef
CALayer でネイティブに見える statusitem の背景を描画する方法はありますか?
c# - Monobjc :: NSStatusItem を追加
Mono の Monobjc ブリッジ内から NSStatusItem を追加しようとしています。関数が呼び出され、例外はスローされませんが、私のアイコンは表示されません:(。
これが私のコードです:
前もって感謝します、
イヴァン