我已经实现了一个与NSOutlineView共享NSTreeController的浏览器,所以我可以很容易地在它们之间切换,并保持状态同步。实现对NSOutlineView的拖动支持很简单,但似乎NSBrowser在使用绑定时不支持拖动。有没有人能够在使用绑定的同时支持从NSBrowser拖拽?
发布于 2012-04-18 05:28:50
我通过创建NSBrowser、NSMatrix和NSBrowserCell的自定义子类解决了这个问题。我不得不通过在NSBrowser子类-mouseDown方法中设置此模式来强制NSBrowser使用NSRadioModeMatrix模式(单元格),因为它不断地被重置。
在NSBrowserCell子类中,我通过简单地让超类做它自己的事情来实现trackMouse:inRect:ofView:untilMouseUp:,但返回了NO以便进行跟踪,这允许在我的NSMatrix子类中调用mouseDragged:。然后在mouseDragged:中,我完成了获取鼠标位置、构造鼠标图像和使用[self dragImage:at:offset:pasteboard:source:slideBack:]的所有工作。
我不确定这是否是最好的方法,但它是有效的。仅当NSBrowser中允许单个选择时,它才起作用。
https://stackoverflow.com/questions/10190154
复制相似问题