NSView
안에 MyView
(서브 클래스는 NSView
)의 여러 뷰가 있습니다. MyView
은 -mouseEntered:
, -mouseExited:
, -mouseDown:
, -mouseDragged:
및 -mouseUp:
을 구현합니다.mouseDragged 이벤트가 다른보기에 의해 도난당했습니다.
MyView
이 마우스 다운 이벤트를 수신하면 거의 모든 마우스 끌기 이벤트는 다음 마우스 업 이벤트까지 MyView
까지 수신됩니다. 커서가 MyView
외부로 나가더라도. 그것이 예상되는 행동입니다.
간혹 MyView
은 마우스 다운 이벤트를 수신하지만 커서가 MyView
내부에있는 동안 마우스 끌기 및 마우스 업 이벤트 만 수신합니다. 커서가 다른 MyView
으로 이동하면 MyView
은 마우스 드래그 이벤트 (처음 마우스 다운 이벤트를 수신하지 않고)를 수신하기 시작하며 후속 마우스 업 이벤트를 수신 할 수 있습니다.
경우는 마우스 다운 이벤트가 MyView
의 상단에 FooView
(NSView
의 서브 클래스)를 작성, 중요하고, 마우스 드래그 이벤트는 FooView
의 프레임 크기를 조정합니다. 이것은 FooView
중 하나가 생성 된 후에 만 문제를 재현 할 수 있기 때문에 관련 될 수 있습니다. FooView
은 마우스 이벤트 메소드를 구현하지 않습니다.
나는 잠시 동안이 문제에 얽혀 있었고, 단순한 예제에서 의도적으로 문제를 재현하거나 문제를 재현하지 못했습니다. 내 코드에 대해 궁금한 점에 대해 기꺼이 대답 해 드리겠습니다. 게시물의 관련 부분이 무엇인지 확신 할 수 없습니다.
문제의 원인은 예상 할 수있는 방법으로 형제의보기가 겹치는 것을 다루지 않는 NSView 인 것으로 밝혀졌다. 해결 방법으로 문제가 해결되었습니다 - 감사합니다. – jlstrecker
고마워요,이 대답은 저에게 두통의 시간을 절약 해주었습니다! – DrRocket
드래그하는 동안 MyView의 하위 항목이 커서 아래에서 사라지거나 (크기가 바뀌거나 크기가 조정 됨으로써) 사라지면 상황이 매우 빠르게 시작됩니다. –