1

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

我找不到使NSButton可拖动的方法。可能吗?

4

1 回答 1

5

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

话虽如此,当然可以在 NSButton 的子类中进行。

拖动源

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

拖动目的地

  1. 注册您的自定义按钮,以便能够使用 registerForDraggedTypes: 接受标题字符串。
  2. 实现拖动目标方法 draggingEntered: 和 performDragOperation: 以返回适当的值。还有其他几种方法,包括 draggingUpdated: 和 draggingExited: 等,您可以使用它们来提供视觉反馈。

那里有很多关于实现拖放的信息。阅读 Apple 的文档:拖放编程主题粘贴板编程指南

于 2010-10-04T14:19:15.320 回答