0

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

4

1 回答 1

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.

于 2012-04-17T21:28:49.790 回答