我已经实现了一个与NSOutlineView共享NSTreeController的浏览器,因此我可以轻松地在它们之间切换并保持状态同步。实现对NSOutlineView的拖动支持很简单,但看起来NSBrowser在使用绑定时不支持拖动。有没有人能够支持从NSBrowser拖动同时还使用绑定?
答案 0 :(得分:2)
我通过创建NSBrowser
,NSMatrix
和NSBrowserCell
的自定义子类来解决这个问题。我必须通过在NSBrowser
子类NSRadioModeMatrix
方法中设置此模式来强制NSBrowser
使用-mouseDown
模式(单个单元格),因为它一直在被重置。
在NSBrowserCell
子类中,我通过简单地使用超类来实现trackMouse:inRect:ofView:untilMouseUp:
,但返回NO
因此会发生跟踪,从而允许调用mouseDragged:
我的NSMatrix
子类。在mouseDragged:
我然后做了所有的事情来获取鼠标位置,构建鼠标图像,并使用[self dragImage:at:offset:pasteboard:source:slideBack:]
。
我不确定这是否是最好的方法,但它确实有效。仅当NSBrowser
中允许单个选择时,它才有效。