ウィンドウから離れてクリックすると、奇妙な問題が発生します。メインとキーを辞退します。次にクリックして戻ると、クリックしたビューがマウスのクリックに反応しません。しかし、2 回目のクリックでビューが応答します。最初のクリック時にウィンドウがキーではなく、クリックによってウィンドウがキーになり、2 回目のクリックを処理できたかのように。
最初のクリック イベント中にアプリケーションがイベントを取得しているかどうかを確認するために、サブクラスNSApplication
化してインターセプトしました。sendEvent:
さらに、私はレスポンダー チェーンをダンプし、確かに私のビューがチェーン内にあることを確認しましたが、ウィンドウは 2 回目のクリックまで重要ではありませんでした。また、最初のクリック イベントを受け取ったときに、アプリケーションがアクティブになっていないことにも気付きました。これはどのように可能ですか?アプリケーションは、マウス イベントを受け取ったときにアクティブになるはずではありませんか? 鶏卵...
考えや提案はありますか?
更新:ドキュメントを読んだ後、私はこれを見つけました:
マウスダウン イベントは、カーソルがビュー オブジェクト上にあるときにユーザーがマウス ボタンを押すと送信されます。ビューを含むウィンドウがキー ウィンドウでない場合、ウィンドウはキー ウィンドウになり、マウスダウン イベントを破棄します。ただし、ビューは、NSView の acceptFirstMouse: メソッドをオーバーライドして YES を返すことにより、このデフォルトの動作を回避できます。
それで、それが起こっているようです。ただし、オーバーライドしようacceptsFirstMouse:
としacceptsFirstResponder
ましたが、役に立ちませんでした。私の意見はまだ「最初のマウスを受け入れる」ではありません。
ありがとう!