私は現在のテキストフィールドについての情報を報告するグローバルアプリを持っています。私はそれを設定しているので、私は私のマウスをクリックするたびに、私が実行します。| NSScreen mainScreen |キーボード/マウスのフォーカスが他のモニターに移動しても更新されませんか?
NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);
をしかし、私は一つの画面上のテキストフィールドにキーボードフォーカスを置いたときに、その同じテキストフィールドでマウスを(繰り返し)をクリックし、 [[NSScreen mainScreen] frame]
は、画面の寸法が間違っていると報告することがよくあります。それは私に他のディスプレイの寸法を与えます。
アップルのドキュメントは言う:
メイン画面は必ずしも メニューバーが含まれているか、(0、0)で、その起源を持っている同じ画面ではありません。メイン画面には、現在キーボードを イベントを受信しているウィンドウを含む 画面を指します。これは、 ユーザーが相互作用する可能性が最も高いため、メイン画面です。
これは、キーボードフォーカスのある画面は常にメイン画面であると言います。私はそれにキーボードフォーカスとマウスフォーカスを与えています。だから私はなぜ他の画面の50%の時間を取得していますか?これは、[NSScreen mainScreen]のバグ
ですか?私は何とか再計算を強制する必要がありますか?キーボードのフォーカスがあるディスプレイの寸法を取得する他の方法はありますか?
右は、私はあまりにも気づいたとダウン非常に小さいサイズにウィンドウのサイズを変更し、一つの画面に完全にそれを置くでした。それでも問題はあります。 – cksubs
確認するには、[ウィンドウ画面]の結果を確認することもできます。 –
あなたは[theWindowIamInteractingWith screen]を意味しますか?これはグローバルアプリです。ウィンドウは別のアプリに属しているので、私はその情報がないと思います。あなたが何か他のことを意味したら、私に知らせてください。 – cksubs