2012-06-30 3 views
4

코코아로 마우스가 지정된 창 안에 있는지 어떻게 확인합니까? 나는 그것이 윈도우 경계 내에 있는지 감지하는 다음과 같은 코드를 가지고 있지만 윈도우가 닫혀 있거나 숨겨져 있지만 마우스가 여전히 그 사각형에 있으면 내부에 있다는 것을 잘못 인쇄합니다. 그것은 또한 다른 윈도우가 위에있는 경우 내부에 있다고 잘못 말하지만, 마우스는 그 아래 테스트중인 윈도우의 영역 내에 있습니다.마우스가 지정된 창 안에 있는지 테스트하는 방법은 무엇입니까?

while ((screen = [screenEnum nextObject]) && !NSMouseInRect(mouse, [screen frame], NO)); 

if (screen != self.window.screen && mouseInside) { 
    NSLog(@"mouse is inside."); 
} 

하지만 항상 "마우스 내부에"인쇄 할 것이다 :

NSPoint mouse = [NSEvent mouseLocation]; 

BOOL mouseInside = NSPointInRect(mouse, self.window.frame); 

if (!mouseInside) { 
    NSLog(@"mouse isn't inside"); 
} else { 
    NSLog(@"mouse is inside"); 
} 

나는 이런 식으로 뭔가를 시도했습니다.

아이디어가 있으십니까? 또는 추적 영역을 유일한 방법으로 설정하고 있습니까? 는 Freenode에

+0

추적 영역을 설정하는 동안, 그것은 * 가장 * 단지 * 방법입니다하지 않습니다 * 방법은 좌표계 간을 폴링 및/또는 변환 할 필요가 없기 때문에 가능합니다. –

답변

6

mikeash이 NSWindow's windowNumberAtPoint: 다음 코드로 작업 표시

에 저를 지적 필요한 :

if ([NSWindow windowNumberAtPoint:mouse belowWindowWithWindowNumber:0] != self.window.windowNumber) { 
    NSLog(@"mouse outside"); 
} 
관련 문제