13

通常の OSX アプリケーションは、最初にアプリケーションにフォーカスするためにフォーカスされていないときに最初のマウス クリックを消費します。それ以降のクリックは、アプリケーションによって処理されます。iTunes の再生/一時停止ボタンと Finder の動作は異なります。最初のクリックは、フォーカスされていなくても実行されます。既存のアプリケーション (Remote Desktop Connection.app) を強制的にフォーカスするだけでなく、最初のクリックで動作させる方法を探しています。

4

3 に答える 3

14

NSViewのacceptsFirstMouseを確認してください。探しているものである可能性があります。

acceptsFirstMouse:サブクラスによってオーバーライドされ、レシーバーに最初のマウスダウンイベントのmouseDown:メッセージを送信する必要がある場合はYESを返し、そうでない場合はNOを返します。

  • (BOOL)acceptsFirstMouse:(NSEvent *)theEvent

パラメータtheEvent最初のマウスダウンイベント。ウィンドウ内のレシーバー上にある必要があります。

ディスカッション受信者は、無条件に値を返すか、イベントの場所を使用して、イベントが必要かどうかを判断できます。デフォルトの実装はtheEventを無視し、NOを返します。

サブクラスでこのメソッドをオーバーライドして、インスタンスがクリックスルーに応答できるようにします。これにより、ユーザーは非アクティブなウィンドウのビューをクリックして、最初にクリックしてウィンドウをアクティブにしてからビューをクリックする代わりに、ワンクリックでビューをアクティブ化できます。ほとんどのビューオブジェクトはクリックスルーの試行を拒否するため、イベントは単にウィンドウをアクティブにします。ただし、NSButtonやNSSliderのインスタンスなど、多くのコントロールオブジェクトはそれらを受け入れます。そのため、ユーザーはマウスボタンを離さなくてもすぐにコントロールを操作できます。

于 2008-09-24T19:01:09.703 に答える
4

フォーカスされていないときに最初のマウス クリックに応答することを「クリック スルー」と呼びます。そして、その価値については、たとえばここここで熱く議論されています。

于 2008-09-24T16:04:48.330 に答える