Есть ли способ вызвать
collectionView(_:targetIndexPathForMoveFromItemAt:toProposedIndexPath:)
, перетаскивая и перетаскивая элемент в пределах одного UICollectionView
- (а не второго рядом с ним или вдругое приложение)?
В этом сценарии перетаскивание включено с помощью подхода iOS11 с UICollectionViewDragDelegate и UICollectionViewDropDelegate:
collectionView.dragInteractionEnabled = true
collectionView.dragDelegate = self
collectionView.dropDelegate = self
Фактически по умолчанию он вызывается только тогда, когда элементперетаскивается из другого collectionView.
С другой стороны, он вызывается при использовании другого подхода, использующего UILongPressGestureRecognizer
, и это сокращается до максимума в целях объяснения:
switch recognizer.state {
case .began:
collectionView.beginInteractiveMovementForItem(at: indexPath)
case .changed:
collectionView.updateInteractiveMovementTargetPosition(point)
case .ended:
collectionView.endInteractiveMovement()
}
Однако в моем случае это неправильный подход, основанный на других требованиях.Я перетаскиваю элементы в структуре папок на основе collectionView, где можно перемещать не только элементы, но и складные поддельные папки, которые тоже являются ячейками.
Я боролся с дьяволомв деталях по дням.Любой вклад был бы великолепен.Спасибо большое.