Ios 当动画为false时,如何检测UIScrollView已完成滚动?

Ios 当动画为false时,如何检测UIScrollView已完成滚动?,ios,swift,uiscrollview,uicollectionview,Ios,Swift,Uiscrollview,Uicollectionview,我有一个名为timeline的collectionView,它以编程方式滚动到第二行到最后一行: internal func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { if !onceOnly { let indexToScrollTo = Index

我有一个名为timeline的collectionView,它以编程方式滚动到第二行到最后一行:

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")
    }
}
滚动完成后,两条print语句都不会激发。我认为部分原因是动画=错误。当我将其设置为true时,它确实正确地完成了打印-我认为特别是ScrollViewDiEndScrollingAnimation打印,尽管ScrollViewDiEndDecelling仍然没有做任何事情,因为它是按编程方式滚动的


如何检测此卷轴已完成

我想是因为你比较了collectionView和scrollView

if scrollView == timeline
这是
false
,顺便说一句,您可以使用

func scrollViewDidScroll(_ scrollView: UIScrollView)
如果没有动画,则在后面的下一行中

timeline.scrollToItem(at: monthCellIndexPath, at: .centeredHorizontally, animated: false)

运行您想要的,因为它将在滚动成功结束时连续发生,无需在scrollView的委托方法中设置它,无论是否调用它

如果scrollView==timeline,我没有问题。timeline是一个collectionView,但我认为这意味着它也是一个scrollView,对吗?无论如何,这是事实。scrollViewDidScroll非常完美。如果没有动画,您可以将其放在scrollToItem之后。在scrollToItem之后,我在访问单元格时遇到问题,但是scrollToItem的滚动部分确实有效,谢谢!仅供参考,如果要检查scrollView和timeline是否为同一对象,则必须使用标识运算符(==)。来自Swift文档:“请注意,等同于(由三个等号表示,或==)与等于(由两个等号表示,或==)并不意味着相同的事情。”.等同于表示类类型的两个常量或变量引用的是完全相同的类实例。等同于表示两个实例在值上被视为相等或相等,根据类型的设计者定义的相等的适当含义。”