Как перетащить из collectionView на iPhone? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь реализовать функцию перетаскивания в моем приложении, созданном специально для iPhone, оно не работает, начиная с перетаскивания, поэтому я все еще не пытался из-за этого отказаться. Для меня это новая функция, и я пытался следовать некоторым учебным материалам, все они по какой-то причине созданы для iPad. И если я попытаюсь запустить этот обучающий код (скачанный у владельца курса) на iPhone или в симуляторе iPhone, он тоже не сработает. Ссылки на учебные материалы: 1. https://www.raywenderlich.com/3121851-drag-and-drop-tutorial-for-ios 2. https://medium.com/hackernoon/how-to-drag-drop-uicollectionview-cells-by-utilizing-dropdelegate-and-dragdelegate-6e3512327202

часть моего кода:

collectionView.dragDelegate = self

    func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
        return dragItems(at: indexPath)
    }

    private func dragItems(at indexPath: IndexPath) -> [UIDragItem] {
        if let itemCell = collectionView?.cellForItem(at: indexPath)
            as? CardCollectionViewCell,
            let image = itemCell.imageViewBack.image {
            let dragItem =
                UIDragItem(itemProvider: NSItemProvider(object: image))
            dragItem.localObject = indexPath//image
            return [dragItem]
        }   else {
            return []
        }
    }
} 

1 Ответ

0 голосов
/ 16 апреля 2020

Вы используете неправильный инициализатор для NSItemProvider. Этот инициализатор предназначен для типов, соответствующих NSItemProviderWriting. Должно быть:

let dragItem = UIDragItem(itemProvider: NSItemProvider(item: image, typeIdentifier: kUTTypeImage as String))    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...