問題タブ [nstrackingarea]
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 - 非アクティブなアプリケーションから現在のカーソルを変更できますか?
LSUIElement
バックグラウンドで実行される (有効になっている)ユーティリティ Mac アプリケーションがあります。ある条件下で、このアプリケーションはいくつかのボタンを含むメニュー ウィンドウを表示します。問題は、このウィンドウにカーソルを合わせると、マウス カーソルがその下のアプリケーションに従って動作することです。メニューの下にテキストがある場合、カーソルは挿入の「I ビーム」形状に変わります。
明らかに、私は通常のポインター矢印を好みます。NSTrackingArea
少しハッキングした後、マウス入力イベントとマウス終了イベントを検出できる友人に飛び込みました。しかし、NSCursor
マウス入力を使用して現在のカーソルを変更しようとしても、何も起こりません。マウス入力イベントの前にアプリケーションをアクティブにすると、カーソルが変化するため、マシンが非アクティブなアプリケーションからのカーソルの変更を拒否しているようです。
カーソルを変更するためだけにアクティブなアプリケーションを切り替えたくありません。非アクティブなアプリケーションからカーソルをいじる方法はありますか?
cocoa - NSImage マウスイベント
カスタム NSView サブクラスでレンダリングしている多数の NSImages があります。ユーザーがマウスをそれらの上に置いたときにこれらの画像を拡大しようとしていますが、これを行うための最良の方法について疑問に思っています。
現在、私は NSView の drawRect: メソッドを使用して画像を合成していますが、NSImageView インスタンスを介して自由にレンダリングすることもできます。私の最初の本能は、NSImage インスタンスごとに NSTrackingArea をセットアップすることでしたが、明らかなものを見逃していないことを確認したかったのです。
objective-c - スクロール中にマウスがtrackingAreaを離れるとき、mouseExitedは呼び出されません
マウスがスクロールまたはアニメーションを実行してNStrackingAreaを終了するときに、mouseExited / mouseEnteredが呼び出されないのはなぜですか?
私は次のようなコードを作成します:
マウスが出入りしました:
追跡エリア:
詳細:
NSScrollViewのビューのサブビューとしてNSViewを追加しました。各NSViewには独自の追跡領域があり、scrollViewをスクロールして追跡領域を離れると、「mouseExited」は呼び出されませんが、スクロールしなくてもすべて正常に機能します。問題は、スクロールすると「updateTrackingAreas」が呼び出され、これが問題になると思うことです。
*サブビューとして追加せずにNSViewだけで同じ問題が発生するため、問題はありません。
objective-c - NSView のマウスダウンを無効にする
ドキュメント ビューとして NSView が設定された NSScrollView があります。NSScrollView で mousedown イベントを取得しようとしていますが、NSView はそれを傍受し続けます。これが起こらないようにする方法はありますか?
また、NSTrackingArea が mouseentered に対して行うのと同じように、ビューの 1 つの領域でそれを停止する方法もあります。
前もって感謝します、
ベン
objective-c - トラッキング エリアを変更すると、イベント mouseEntered が検出されない
次のように定義された 2 つのトラッキング エリアがあります。
私の問題は、area1 から area2 に直接移動すると、検出されたイベントが area1 からの「mouseExited」であるため、area2 の「mouseEntered」メソッドが呼び出されないことです。エリア 1 を出てエリア 2 に入るときにイベントを検出するにはどうすればよいですか?
objective-c - 検出/定義されていないドラッグアンドドロップ追跡領域を使用する場合
私の問題は、ビュー内で何かをドラッグしているときに、追跡領域が検出されないことです。
私はテキストを持っていて、いくつかの追跡領域を定義したので、テキストの特定の部分に目を通すと、彼の背景が変わります。今私の問題は、何かをドラッグしているときに追跡領域を通過すると、追跡領域が検出されないことです。
ドラッグアンドドロップを使用しているときに追跡領域の検出を声に出して行う理由はありますか?
cocoa - テーブルビューの問題のNSTrackingArea
Twitter アプリのように機能するようにテーブル ビューを設定しました。つまり、各行にカーソルを合わせると右側にアイコンが表示され、行を離れるとアイコンが消えます。私はこれに基づいてそれをコーディングしました:
スクロール中にマウスが trackingArea を離れると、mouseExited が呼び出されない
非常に奇妙なことは、各行に (他のテキスト フィールドなどと共に) チェックボックスがあり、チェックボックスをクリックすると、その行のアイコンが次の行にジャンプすることです。チェックボックスをもう一度クリックすると、次の行にジャンプします。これは、アイコンが表示されている最後の行にジャンプするまで繰り返され、次に表示されている最初の行にジャンプして、この動作を繰り返し続けます。そして、それは時々しか起こりません。:-/ 私はこれを理解しようとしましたが、これが発生したときに何も呼び出されていません。つまり、トラッキング領域への呼び出しがないか、マウスが何も入力/終了しませんでした。これはまったく意味があり、Twitterがどのようにコードを間違ってコーディングしたかを再現しようとしていることを考えると、おそらく意味がありますか?
ありがとう、
ラジコン
objective-c - updateTrackingAreas をオーバーライドする場合
NSScrollView
そのため、いくつかのカスタムビューを含む非常に大きなものがあります。-(void)updateTrackingAreas
これらのカスタム ビューでは、次のようにオーバーライドしています。
しかし、NSScrollView に約 50 個のカスタム ビューのインスタンスがあり、一度に表示できるのはそのうちの約 5 個だけであるため、これは少し効率が悪いと感じています。このようにして、非表示のビューの追跡領域を更新しています。
したがって、ビューが NSScrollView の可視四角形にない場合は、追跡領域の更新をスキップすると思いました。何かのようなもの:
これはうまくいっているようですが、これが安全かどうかはわかりません。
この件について誰かアドバイスはありますか?
macos - カスタム NSStatusItem と NSView が NSTrackingEvents を確実に受信しない
mouseOverでパネルを表示しようとしているステータスバーアイテムのみのアプリがあります。カスタム ステータス アイテム (および関連付けられたビュー) を接続して動作させていますが、トラッキング rect は数十回の起動ごとにしかイベントを受信していません。これにより、どこかで競合状態が発生していると思われますが、見つけることができません。カスタム ステータス バーのアイテム ビューでは、次のようになります。
ほとんどの起動では、アプリはトラッキング マウス イベントに応答しませんが、ときどきメソッドmouseEntered:
とmouseExited:
メソッドが適切に呼び出され、完全に混乱します。ここで何が起こっていて、何が間違っていますか?
EDIT 07/17/2012 @Streams
の回答に基づいてコードを変更しましたが、同じ問題が発生しました。
EDIT 07/18/2012
これは、よく知られている github プロジェクト (@Stream によって作成された) を使用して問題を示す
ベアボーンサンプル プロジェクトです。マウスオーバー イベントを確実に受け取ることはできません。
macos - NSTextField のマウス カーソルを変更できません
NSTextField
NIB から読み込まれたウィンドウ シートのマウス カーソルを変更しようとしています。
ドキュメントに従って、サブクラス化NSTextField
して実装しresetCursorRects
ました。
これは決して呼び出されません。に以下を追加した後でもNSWindowViewController
:
NSTextField
また、サブクラスに以下を追加して、トラッキング エリアを試しました。
どちらも機能しませんでした。私は何を間違っていますか?