UICollectionViewController 在插入新单元格时停止滚动
UICollectionViewController halts scrolling when inserting new cells
我有一个不断滚动的 UICollectionView。当用户滚动时,控制器发出 API 请求新页面,通常在用户到达她的提要底部之前加载下一页。但是,当 UIViewController 通过 fetchedResultsController 更新新数据时,滚动会停止,即使项目不在屏幕上也是如此。这会导致用户出现故障的滚动体验。如何停止打断滚动?
这就是我实现插入的方式:
编辑
这似乎不是在主线程上执行暂停操作的问题。似乎正在主动停止滚动。我运行以下代码:
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
事实证明,当我下载新数据时,我有一个 UIRefreshControl 对象正在调用 endRefreshing()
。这显然会停止滚动。
我有一个不断滚动的 UICollectionView。当用户滚动时,控制器发出 API 请求新页面,通常在用户到达她的提要底部之前加载下一页。但是,当 UIViewController 通过 fetchedResultsController 更新新数据时,滚动会停止,即使项目不在屏幕上也是如此。这会导致用户出现故障的滚动体验。如何停止打断滚动?
这就是我实现插入的方式:
编辑
这似乎不是在主线程上执行暂停操作的问题。似乎正在主动停止滚动。我运行以下代码:
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
事实证明,当我下载新数据时,我有一个 UIRefreshControl 对象正在调用 endRefreshing()
。这显然会停止滚动。