2015-09-22 4 views
0

Я работаю над приложением, которое отображает иконки svg внутри NSCollectionView. Я хочу реализовать функцию перетаскивания &, чтобы позволить пользователям перетаскивать svg в Finder или другое приложение. Есть у меня есть два вопроса:NSCollectionView завершено событие капли

1.) Для реализации перетащить в другое приложение, которое я использую для NSFilenamesPboardType registerForDraggedTypes и CollectionView: writeItemsAtIndexes: toPasteboard: создать временный файл и записать его URL в [гипсокартонных writeObjects: @ [fileURL ]]; потому что collectionView: namesOfPromizedFilesDroppedAtDestination: forDraggedItemsAtIndexes: не вызывается в этом случае. Это правильная реализация? Я не могу найти, как реализовать drag & drop for svg по-другому.

2.) Как я могу получить обратный вызов, который закончился? NSTableView в источнике данных имеет метод tableView: draggingSession: endAtPoint: операция, которая определяет конец перетаскивания. Для NSCollectionView этот метод не документирован, но существует в NSCollectionViewDelegate. Могу ли я использовать его, и приложение будет проходить обзор?

Спасибо за любые советы

ответ

0

CollectionView: namesOfPromisedFilesDroppedAtDestination: forDraggedItemsAtIndexes: будет вызываться, если вы используете NSFilesPromisePboardType. Вы создаете файлы после капли. Если другое приложение не принимает обещанные файлы, это не сработает.

Похоже, что Apple забыла добавить новые методы перетаскивания делегата из 10.7 в документацию NSCollectionViewDelegate. Вы можете использовать их.

1

Существует метод NSCollectionViewDelegate, который был доступен с 10.7:

- collectionView:draggingSession:endedAtPoint:dragOperation: 

вызывается метод после элемент упала до получения заявки.