2012-04-17 3 views
0

NSTreeController를 NSOutlineView와 공유하는 브라우저를 구현하여 쉽게 전환 할 수 있고 상태를 동기화 상태로 유지할 수 있습니다. NSOutlineView에 대한 드래그 지원을 구현하는 것은 간단하지만 바인딩을 사용하는 동안 NSBrowser가 드래그를 지원할 수없는 것으로 보입니다. 누구든지 바인딩을 사용하면서 NSBrowser에서 끌기를 지원할 수 있습니까?NSBrowser에서 드래그하여 바인딩을 사용합니까?

답변

2

사용자 정의 서브 클래스를 NSBrowser, NSMatrixNSBrowserCell으로 작성하여이를 해결했습니다. 이 모드를 NSBrowser 서브 클래스 -mouseDown 방법으로 설정하여 NSBrowserNSRadioModeMatrix 모드 (단일 셀)로 강제 설정해야했기 때문에 지속적으로 재설정되었습니다.

NSBrowserCell 서브 클래스에서, 단순히 슈퍼 클래스가이 일을의 수행함으로써 trackMouse:inRect:ofView:untilMouseUp:을 구현하지만, 반환 NO 나의 NSMatrix 하위 클래스에서 호출 할 mouseDragged:을 허용하는 발생하게 추적. mouseDragged:에서 나는 마우스 위치를 얻고, 마우스 이미지를 만들고, [self dragImage:at:offset:pasteboard:source:slideBack:]을 사용하기 위해 모든 것을했다.

이것이 최선의 방법인지 확실하지 않지만 효과적입니다. NSBrowser에서 허용되는 단일 선택이있는 경우에만 작동합니다.

관련 문제