我有一个无休止地滚动的UICollectionView。当用户滚动时,控制器对新页面发出API请求,通常在用户到达其源的底部之前加载下一页。但是,当UIViewController通过fetchedResultsController更新新数据时,即使项目不在屏幕上,滚动也会停止。这导致用户的毛刺滚动体验。如何停止中断滚动?
这就是我实施插入的方式:
https://stackoverflow.com/a/28878296/310385
修改
这对在主线程上执行暂停操作似乎不是问题。似乎滚动正在被主动停止。我运行了以下代码:
func updateCollection(){
collectionView?.performBatchUpdates({ () -> Void in
//perform insertions
println("Insertions started")
}),
completion: {(completed) -> Void in
println("Completed")
}
}
override func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
println("End Decelerating")
}
并且它始终如一地打印出来:
Insertions started
End Decelerating
Completed
答案 0 :(得分:1)
事实证明,当我下载新数据时,我有一个正在调用endRefreshing()
的UIRefreshControl对象。这显然会停止滚动。