빈 빨간색 사각형이있는 간단한 응용 프로그램을 만들려고합니다. 마우스가 사각형의 상반부 테두리 위로 이동하면 커서가 닫힙니다.NSView가 마우스 이동 이벤트를 감지하지 못합니다.
나는 투명한 NSWindow
을 만들고 그것으로 을 그 안에 넣었고, 마우스로 움직이는 이벤트를 받아들이도록 사각형을 만들었다. (방법 : -setAcceptsMouseMovedEvents
). 나는 YES를 반환하기 위해 -canBecomeKeyWindow
과 -canBecomeMainWindow
윈도우를 오버라이드했다. 그러나 어쨌든 이벤트 중 어느 것도 수신되지 않고 있습니다. NSView
.
동일한 코드를 코코아 애플리케이션 프로젝트로 만들고 -applicationDidFinishLaunching
메서드에서 내 창을 만들면 내보기가 -mouseMoved
이벤트를 수신 할 수있었습니다.
왜 재단 명령 줄 유틸리티 프로젝트를 사용할 때 마우스가 이동 한 이벤트를받지 못합니까?
Foundation cmd line 유틸리티 프로젝트를 통해 창 (탄소 또는 코코아)을 만들 때마다 제목 표시 줄을 클릭해도 창은 핵심이되지 않습니다. 제목 표시 줄을 클릭하면 밝은 회색이 유지됩니다. 어두운 회색이되었다. 왜 이런 일이 일어나는 걸까요?
YES를 반환하기 위해 -canBecomeKeyWindow
및 -canBecomeMainWindow
을 NSwindow
으로 대체했습니다.
Joshua 내 view는 mouseDown 및 mouseDragged와 같은 다른 이벤트를 수신 할 수 있습니다. 유일한 문제는 mousesMoved 이벤트를 수신하는 것입니다. 사실 탄소 (C)에서 코코아 (Cocoa)로 응용 프로그램을 이전하려고합니다. 원래의 탄소 코드에서 사용되지 않았기 때문에 인터페이스 빌더 및 nib 파일을 사용할 수 없습니다. 투명한 캡처 창을 만들려고 할 때이 문제에 봉착했습니다. 사용자가 마우스 포인터를 사각형의 테두리 위로 이동하면 마우스 포인터가 closedHand로 바뀌어야 커서가 창을 이동할 수있는 사용자를 묘사합니다. –
"제목 표시 줄을 클릭하면 짙은 회색이 아닌 밝은 회색이 유지됩니다." 문제는 여전히 남아 있습니다 : 당신은 윈도우 서버와 적절히 인터페이스하지 못하고 있습니다. 명령 줄 도구는이를위한 것이 아닙니다. 나는 새로운 Cocoa 응용 프로그램을 만드는 것이 더 낫고 적절한 Cocoa 디자인 패턴을 사용하여 응용 프로그램을 다시 빌드하는 것이 훨씬 낫다고 조언합니다. 기존 코드를 커맨드 라인 프로그램의 목구멍에 내려 놓음으로써 Carbon 어플리케이션의 직선 "포트"를 만들려고하는 고통의 세계 *를 요구하고 있습니다. 이것은 나쁜 충고보다 더 나쁩니다. –