Перетаскивание источников
Сеанс перетаскивания инициируется пользователем, щелкающим по мыши в окне или представлении и перемещающим мышь. NSView и NSWindow реализуют метод dragImage:at:offset:event:pasteboard:source:slideBack:
обработать сеанс перетаскивания. Вы вызываете этот метод в mouseDown:
или mouseDragged
: метод Вашего подкласса NSView или NSWindow. Вы обеспечиваете изображение для отображения во время перетаскивания, область монтажа, содержащая данные и объект, действующий как «владелец» или источник перетаскивания, данных. Во время сеанса перетаскивания источник перетаскивания отправляется сообщения, определенные протоколом NSDraggingSource для выполнения любых необходимых действий, описанных ниже.
Перетащите операции
Только один из методов NSDraggingSource должен быть реализован: draggingSourceOperationMaskForLocal:
. Этот метод объявляет, какие типы операций источник позволяет выполняться. Таблица 1 перечисляет доступные операции перетаскивания. (В Java константы определяются в пространстве имен NSDraggingInfo и недостают NS
префикс.) Метод должен возвратить комбинацию битового «ИЛИ» позволенных типов или NSDragOperationNone
если не позволяются никакие операции.
Перетаскивание работы |
Значение |
---|---|
Данные, представленные изображением, могут быть скопированы. |
|
Данные могут быть совместно использованы. |
|
Работа может быть определена местом назначения. |
|
Работа согласовывается конфиденциально между источником и местом назначения. |
|
Данные могут быть перемещены. |
|
Данные могут быть удалены. |
|
Все вышеупомянутые |
|
Осуждаемый. Использовать |
|
Никакие не перетаскивают операции, позволяются. |
Позволенные операции могут отличаться, если перетаскивание происходит полностью в Вашем приложении или между Вашим приложением и другим. Флаг передал draggingSourceOperationMaskForLocal:
указывает, является ли это локальной переменной, или внутренний, перетащить.
Пользователь может нажать модифицирующие клавиши для дальнейшего выбора который работа выполнить. Если управление, опция или командная клавиша нажимаются, маска работы источника отфильтрована, чтобы только содержать операции, данные в Таблице 2. Чтобы препятствовать тому, чтобы модификаторы изменили маску, Ваш источник перетаскивания должен реализовать ignoreModifierKeysWhileDragging
и возвратитесь YES
.
Перетащите сообщения
В течение перетаскивания исходный объект отправляется ряд сообщений для уведомления его относительно состояния работы перетаскивания. В самом начале перетаскивания источник отправляется сообщение draggedImage:beganAt:
. Каждый раз перетащенные перемещения изображения, источник отправляется a draggedImage:movedTo:
сообщение. Наконец, когда пользователь отпустил кнопку мыши, и место назначения или выполнило работу отбрасывания или отклонило ее, источник отправляется a draggedImage:endedAt:operation:
сообщение. Параметром работы является работа перетаскивания выполняемое место назначения или NSDragOperationNone
если перетаскивание перестало работать. (В Java эти имена методов startedDraggingImage
, movedDraggingImage
, и finishedDraggingImage
.)
Источник перетаскивания обычно не должен реализовывать ни один из этих методов. Если Вы собираетесь поддерживать NSDragOperationMove
или NSDragOperationDelete
операции, однако, действительно необходимо реализовать draggedImage:endedAt:operation:
удалить перетащенные данные из источника. (Обратите внимание на то, что NSDragOperationDelete
работу требуют при перетаскивании любого объекта к Значку корзины в прикреплении.)
Перетащенное изображение
Изображение, опозоренное сеанс перетаскивания, является просто изображением, представляющим данные по области монтажа. Несмотря на то, что место назначения перетаскивания может получить доступ к изображению, его первоочередная задача с данными области монтажа, которые изображение представляет — работа перетаскивания, которую в конечном счете выполняет место назначения, находится на данных области монтажа, не на самом изображении.
Когда сеанс перетаскивания запускается при помощи метода NSView dragFile:fromRect:slideBack:event:
, NSView использует значок Finder файла для изображения. Для Ваших собственных перетаскиваний необходимо создать подходящее изображение. Возможности включают полупрозрачный снимок выведенных на экран данных, таких как выбранный раздел текста или символьное представление данных, таких как значок таблицы при перетаскивании данных электронной таблицы.