从NSBrowser拖动并使用绑定?

时间:2012-04-17 11:14:56

标签: cocoa cocoa-bindings nsbrowser

我已经实现了一个与NSOutlineView共享NSTreeController的浏览器,因此我可以轻松地在它们之间切换并保持状态同步。实现对NSOutlineView的拖动支持很简单,但看起来NSBrowser在使用绑定时不支持拖动。有没有人能够支持从NSBrowser拖动同时还使用绑定?

1 个答案:

答案 0 :(得分:2)

我通过创建NSBrowserNSMatrixNSBrowserCell的自定义子类来解决这个问题。我必须通过在NSBrowser子类NSRadioModeMatrix方法中设置此模式来强制NSBrowser使用-mouseDown模式(单个单元格),因为它一直在被重置。

NSBrowserCell子类中,我通过简单地使用超类来实现trackMouse:inRect:ofView:untilMouseUp:,但返回NO因此会发生跟踪,从而允许调用mouseDragged:我的NSMatrix子类。在mouseDragged:我然后做了所有的事情来获取鼠标位置,构建鼠标图像,并使用[self dragImage:at:offset:pasteboard:source:slideBack:]

我不确定这是否是最好的方法,但它确实有效。仅当NSBrowser中允许单个选择时,它才有效。