我已经实现了一个与 NSOutlineView 共享 NSTreeController 的浏览器,因此我可以轻松地在它们之间切换并保持状态同步。实现 NSOutlineView 的拖动支持很简单,但 NSBrowser 似乎在使用绑定(bind)时不支持拖动。有没有人能够支持从 NSBrowser 拖动同时使用绑定(bind)?
最佳答案
我通过创建 NSBrowser
、NSMatrix
和 NSBrowserCell
的自定义子类解决了这个问题。我必须通过在 NSBrowser
子类 -mouseDown
中设置此模式来强制 NSBrowser
使用 NSRadioModeMatrix
模式(单个单元格)方法,因为它不断被重置。
在NSBrowserCell
子类中,我通过简单地让父类(super class)做它的事情来实现trackMouse:inRect:ofView:untilMouseUp:
,但返回NO
因此会发生跟踪,这允许在我的 NSMatrix
子类中调用 mouseDragged:
。在 mouseDragged:
中,我做了所有的事情来获取鼠标位置,构造鼠标图像,并使用 [self DragImage:at:offset:pasteboard:source:slideBack:]
.
我不确定这是否是最好的方法,但它确实有效。仅当 NSBrowser 中允许单个选择时它才有效。
关于cocoa - 从 NSBrowser 拖动并使用绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190154/