2011-01-03 2 views
1

공통 슈퍼 뷰의 하위 뷰인 NSView의 하위 클래스가 2 개 있습니다. 그들은 중첩되지 않으며 둘 다 mousedragged 호출을 가로 챕니다. 하위 클래스 중 하나에서 다른 클래스로 드래그하면 mousedragged 함수가 호출 될 때까지 마우스 버튼을 놓을 때까지 호출됩니다. 비록 기본 동작은 mousedragged 함수가 마우스가 수신기의 경계 위에있을 때만 호출되는 것이 었습니다. Iam도 마우스 입력, 종료 및 이동 이벤트에 NSTrackingArea를 사용하고 있지만 읽은 이벤트는 드래그 이벤트와 관련이 없습니다.다른 뷰에서 드래그 할 때 MouseDragged가 해제되지 않습니다.

감사합니다. Jose.

+0

정상적인 동작입니다. 귀하의 질문은 무엇인가? –

+0

글쎄, 전에 다른 행동을하고 있었는데, 불행히도 내가 무엇을 바꿨는지 모르겠다. mousedragged 이벤트는 경계를 입력 할 때 바로 다른 하위 클래스 뷰로 점프하고있었습니다. 그리고 그것이 내가 필요한 것입니다. –

답변

0

NSWindow의 하위 클래스를 지정하고 sendEvent:을 재정의 할 수 있습니다. 그렇게하면 NSLeftMouseDragged 이벤트를 가로 챌 수 있고 원하는대로 보낼 수 있습니다.

+0

감사합니다. Tom,이게 더 나을 것 같습니다. 내가 한 일은 결국 두 subview에서 [super mousedragged]를 호출하는 것이었고, superview는 그 위치에 따라 [subview distributed_mouseDragged]를 호출 할 것입니다. –

관련 문제