Как я могу определить, была ли отменена операция перетаскивания с использованием NSDraggingInfo или подобного?

Я создал подкласс NSImageView и реализовал неофициальный протокол для перетаскивания изображений между другими экземплярами того же класса. Я сохраняю ссылку на изображение вида до операции перетаскивания и могу вернуть его к указанному изображению с учетом определенных критериев.

Тем не менее, я не могу определить, была ли отменена операция перетаскивания. Я знаю, что метод draggingEnded вызывается, но он также вызывается, когда перетаскивание прошло успешно. Есть идеи?

1 ответ

Решение

Я столкнулся с аналогичным требованием. Тот факт, что вы можете изучить operation аргумент передается методу протокола NSDraggingSource draggedImage:endedAt:operation: обнаружение отмены перетаскивания не очень хорошо задокументировано.

в draggedImage:endedAt:operation: Метод просто добавьте следующую проверку:

if (operation == NSDragOperationNone)
    return;

// Otherwise perform any drag completion tasks.
Другие вопросы по тегам