Reputation: 8944
I am using pagination to load records in my app. I am using below code to for this purpose. When scroll down fast then method (self.scrollViewMethod(scrollView))
is called multiple times. Please tell me how can I prevent this?
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print("scrollViewDidEndDecelerating")
self.scrollViewMethod(scrollView)
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !decelerate {
print("scrollViewDidEndDragging")
self.scrollViewMethod(scrollView)
}
}
func scrollViewMethod(_ scrollView : UIScrollView) {
if scrollView == mainScrolView {
self.scrollMove()
}
else if scrollView == tblListing || scrollView == Table || scrollView == JobTable {
if scrollView.contentSize.height <= (scrollView.contentOffset.y + scrollView.frame.size.height + 20) {
if presentTap == 1 && loadMoreAll && arrAll.count >= limitCheck {
self.searchService(false)
}
else if presentTap == 3 && loadMoreUrgent && arrUrgentJobs.count >= limitCheck {
self.urgentSearchService(false)
}
else if presentTap == 2 && loadMoreJob && arrJobs.count >= limitCheck {
self.searchJobService(isRefresh: false)
}
}
}
}
Upvotes: 1
Views: 740
Reputation: 82759
for e.g
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
NSObject.cancelPreviousPerformRequests(withTarget: self)
//print("called here");
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print("scrollViewDidEndDecelerating")
perform(#selector(self.scrollViewDidEndScrollingAnimation), with: scrollView, afterDelay: 0.2)
}
option 2
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
let offset: CGPoint = scrollView.contentOffset
let bounds: CGRect = scrollView.bounds
let size: CGSize = scrollView.contentSize
let inset: UIEdgeInsets = scrollView.contentInset
let y: Float = Float(offset.y + bounds.size.height - inset.bottom)
let h: Float = Float(size.height)
let reload_distance: Float = 50
if y > h + reload_distance {
// call your load more actions
}
}
Upvotes: 1