0

Im пытается реализовать бесконечную прокрутку в представлении коллекции, у которого есть собственный макет.scrollViewDidLoad вызвал многократное время при использовании бесконечного прокрутки

после поиска я нашел этот метод:

override func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    //make sure collection view is on screen 
    if collectionView?.window == nil { return } 

    let offsetY = scrollView.contentOffset.y 
    let contentHeight = scrollView.contentSize.height 

    if offsetY > contentHeight - scrollView.frame.size.height { 
     print("scroll ended") 
     getNextTenProducts() 
     collectionView?.reloadData() 
    } 

} 

однако, оператор печати вызывается несколько раз вызывая много ячеек, которые будут вставлены в целях сбора, иногда даже дозвонились 20 раз подряд.

есть ли обходной путь?

ответ

0

Я нашел решение:

override func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    if collectionView?.window == nil { return } 

    let offsetTolerance = CGFloat(30) 

    let offsetY = scrollView.contentOffset.y 
    let contentHeight = scrollView.contentSize.height 

    if offsetY > contentHeight - scrollView.frame.size.height + offsetTolerance, !scrollViewReachedBottom { 
     print("scroll ended") 
     scrollViewReachedBottom = true 
    } else if offsetY < contentHeight - scrollView.frame.size.height - offsetTolerance { 
     scrollViewReachedBottom = false 
    } 

} 
Смежные вопросы