UICollectionViewController moveItemAtIndexPath — как узнать, когда перетаскивание завершено

#ios #ios9

#iOS #ios9

Вопрос:

Мне нужно получить событие / информацию, когда CollectionView запускает и останавливает перетаскивание.

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

 - (void)collectionView:(UICollectionView *)collectionView
   moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath
           toIndexPath:(NSIndexPath *)destinationIndexPath{
  

Ответ №1:

Идея #1:

Используйте следующие два метода делегирования :-

 func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

}
  

// Подпись метода изменена для Swift 3

 func collectionView(UICollectionView, didEndDisplaying: UICollectionViewCell, forItemAt: IndexPath) {

}
  

Идея #2:
UICollectionView является подклассом UIScrollView. Итак, если вы установили делегат и внедрили UIScrollViewDelegate , вы должны быть в состоянии обнаружить это так же, как UIScrollView

Проверьте эту функцию:

 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
}
  

Это должно сработать..

Приветствия!

Комментарии:

1. willDisplayCell вызывается нормально, но не didEndDisplayingCell

2. Спасибо, но все то же самое.

Ответ №2:

используйте эти методы, чтобы начать прокрутку и завершить прокрутку представления коллекции:

  func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {

 }

 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

 }