Я хочу определить, когда пользователь переходит на следующую страницу (в collectionView с включенной подкачкой страниц). Как только пользователь начинает переходить к следующей ячейке, я подготавливаю ее, используя функцию collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
. Здесь я устанавливаю переменную, указывающую, какой будет следующая видимая ячейка.
Затем, когда пользователь прекращает перетаскивание, я запускаю визуальные обновления, используя функцию scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
. На данный момент я знаю, какая ячейка видна, потому что я сохранил ее в переменной ранее.
Однако, когда пользователь начинает перетаскивать collectionView и затем прокручивает обратно в начальный вид, collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
уже сохранил следующую вещь. Это приводит к тому, что следующая функция (scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
) запускает неправильный код (визуальные обновления).
Есть ли способ узнать, когда пользователь отменил или фактически выполнил прокрутку на следующую страницу, чтобы я мог остановить scrollViewDidEndDragging
от обновления, если прокрутка не была "успешной"?