Перетаскивание из и в NSButton - PullRequest
0 голосов
/ 03 октября 2010

Я пытаюсь написать приложение. это позволит пользователю перетащить из NSButton в другой. После удаления я бы хотел, чтобы заголовок был сброшен на кнопку.

Я не могу найти способ сделать NSButton перетаскиваемым. Возможно ли это?

1 Ответ

5 голосов
/ 04 октября 2010

Сначала предупреждение: это звучит так, как будто это сбивает с толку пользователя. Кнопки предназначены для имитации кнопок в реальном мире. Вы толкаете их, а не тащите их вокруг.

Сказав это, это, безусловно, можно сделать в подклассе NSButton.

Источник перетаскивания

  1. Реализация метода источника перетаскивания draggingSourceOperationMaskForLocal :. Похоже, вы копируете заголовок, поэтому вы можете использовать NSDragOperationCopy.
  2. Вызов dragImage: at: offset: event: pasteboard: source: slideBack: в вашем mouseDragged: метод. Используйте перетаскивание pBoard ([NSPasteboard pasteboardWithName:NSDragPboard]) и скопируйте в него заголовок вашей кнопки. Для изображения вы можете нарисовать свою кнопку в NSImage и использовать ее в качестве перетаскиваемого изображения, или вы можете использовать значок или даже просто заголовок.

Перетащите пункт назначения

  1. Зарегистрируйте свою пользовательскую кнопку, чтобы иметь возможность принимать строку заголовка, используя registerForDraggedTypes :.
  2. Реализуйте методы назначения перетаскивания draggingEntered: и executeDragOperation: для возврата соответствующих значений. Есть несколько других методов, включая draggingUpdated: и draggingExited: среди прочих, которые вы можете использовать для обеспечения визуальной обратной связи.

Там много информации о реализации перетаскивания. Прочитайте документы Apple: Темы программирования Drag & Drop и Руководство по программированию картона

...