从NSButton拖动到NSButton

时间:2010-10-03 13:36:49

标签: cocoa drag-and-drop draggable nsbutton

我正在尝试编写应用。这将允许用户从NSButton拖动到另一个。丢弃时,我希望将标题放在按钮上。

我无法找到让NSButton可拖动的方法。有可能吗?

1 个答案:

答案 0 :(得分:5)

首先警告:这听起来会让用户感到困惑。按钮旨在模拟现实世界中的按钮。你推它们而不是拖着它们。

话虽如此,它确实可以在NSButton的子类中完成。

拖动来源

  1. 实现拖动源方法draggingSourceOperationMaskForLocal:。听起来你正在复制标题,所以你可能想要使用NSDragOperationCopy。
  2. 调用dragImage:at:offset:event:pasteboard:source:slideBack:在mouseDragged:方法中。使用拖动pBoard([NSPasteboard pasteboardWithName:NSDragPboard])并将按钮标题复制到其中。对于图像,您可以将按钮绘制为NSImage并将其用作拖动图像,或者您可以使用图标甚至只使用标题。
  3. 拖动目的地

    1. 注册您的自定义按钮,以便能够使用registerForDraggedTypes:接受标题字符串。
    2. 实现拖动目标方法draggingEntered:和performDragOperation:以返回适当的值。还有其他一些方法,包括draggingUpdated:和draggingExited:您可以用来提供视觉反馈。
    3. 有很多关于实施拖拉机的信息下降。阅读Apple的文档:Drag & Drop Programming TopicsPasteboard Programming Guide