cocoa - 从 NSButton 拖拽到 NSButton

标签 cocoa drag-and-drop draggable nsbutton

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

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

最佳答案

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

话虽如此,这当然可以在 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 的文档:Drag & Drop Programming TopicsPasteboard Programming Guide

关于cocoa - 从 NSButton 拖拽到 NSButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849964/

相关文章:

delphi - 如何捕获并打开拖放到应用程序图标上的文件?

类似于 Trello 的 Javascript 拖放悬停临时 Div 占位符?

wpf - 为什么我的 WPF 应用程序禁用了拖放(即使 AllowDrop 为 true)?

javascript - HTML 拖放持久化

iphone - 保存 View 状态iphone sdk

swift - 通知中心观察者检查 NSTextView 是否正常工作

html - primefaces - 可从 <p :dataTable> works but not visible 拖动

objective-c - 使用 KVO 更新由 NSPredicate 过滤的 NSTableView

ios - 确定必要变量类型的设计模式