Cocoaを使用して、マウスが私の指定したウィンドウ内にあるかどうかを確認するにはどうすればよいですか?ウィンドウの境界内にあるかどうかを検出する次のコードがありますが、ウィンドウが閉じている/非表示になっているにもかかわらず、マウスがその長方形内にある場合は、ウィンドウが内側にあると誤って出力されます。また、別のウィンドウがその上にある場合は内部にあると誤って表示されますが、マウスはその下でテストしているウィンドウの領域内にあります。
NSPoint mouse = [NSEvent mouseLocation];
BOOL mouseInside = NSPointInRect(mouse, self.window.frame);
if (!mouseInside) {
NSLog(@"mouse isn't inside");
} else {
NSLog(@"mouse is inside");
}
私はこのようなことを試しました:
while ((screen = [screenEnum nextObject]) && !NSMouseInRect(mouse, [screen frame], NO));
if (screen != self.window.screen && mouseInside) {
NSLog(@"mouse is inside.");
}
ただし、常に「マウスは中にあります」と表示されます。
何か案は?それとも、追跡エリアを設定することが唯一の方法ですか?