У меня есть collectionView с именем timeline, который прокручивается программно со второй до последней строки здесь:
internal func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if !onceOnly {
let indexToScrollTo = IndexPath(row: self.posts.count - 1, section: 0)
collectionView.scrollToItem(at: indexToScrollTo, at: .left, animated: false)
let firstPost = posts.first?.timeStamp
let firstOfFirstMonth = firstPost?.startOfMonth()
let diff = posts.last?.timeStamp.months(from: firstOfFirstMonth!)
//self.currentPostMonth = diff
let monthCellIndexPath = IndexPath(row: diff!, section: 0)
timeline.scrollToItem(at: monthCellIndexPath, at: .centeredHorizontally, animated: false)
onceOnly = true
}
}
позже .. Я пытаюсь обнаружить, что прокрутка завершена с
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if scrollView == timeline {
print("Did finish")
}
}
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
if scrollView == timeline {
print("Did finish")
}
}
Ни один оператор печати не срабатывает после завершения прокрутки. Я думаю, что частично, потому что анимация = ложь. Когда я устанавливаю это в true, он печатает «Закончил правильно» - я думаю, что scrollViewDidEndScrollingAnimation печатает, даже если scrollViewDidEndDecelerating по-прежнему ничего не делает, потому что он прокручивается программно.
Как я могу определить, что этот свиток закончен?