Сначала предупреждение: это звучит так, как будто это сбивает с толку пользователя. Кнопки предназначены для имитации кнопок в реальном мире. Вы толкаете их, а не тащите их вокруг.
Сказав это, это, безусловно, можно сделать в подклассе NSButton.
Источник перетаскивания
- Реализация метода источника перетаскивания draggingSourceOperationMaskForLocal :. Похоже, вы копируете заголовок, поэтому вы можете использовать NSDragOperationCopy.
- Вызов dragImage: at: offset: event: pasteboard: source: slideBack: в вашем mouseDragged: метод. Используйте перетаскивание pBoard (
[NSPasteboard pasteboardWithName:NSDragPboard]
) и скопируйте в него заголовок вашей кнопки. Для изображения вы можете нарисовать свою кнопку в NSImage и использовать ее в качестве перетаскиваемого изображения, или вы можете использовать значок или даже просто заголовок.
Перетащите пункт назначения
- Зарегистрируйте свою пользовательскую кнопку, чтобы иметь возможность принимать строку заголовка, используя registerForDraggedTypes :.
- Реализуйте методы назначения перетаскивания draggingEntered: и executeDragOperation: для возврата соответствующих значений. Есть несколько других методов, включая draggingUpdated: и draggingExited: среди прочих, которые вы можете использовать для обеспечения визуальной обратной связи.
Там много информации о реализации перетаскивания. Прочитайте документы Apple: Темы программирования Drag & Drop и Руководство по программированию картона