【发布时间】:2020-09-18 02:03:54
【问题描述】:
我创建了一个包含 4 个单元格的 collectionView,单元格框架等于整个窗口框架,因此我可以滚动浏览它们,因为它们是 PageViewController。
lazy var collectionView : PagesCollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 0
let collectionView = PagesCollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.isPagingEnabled = true
collectionView.alwaysBounceHorizontal = false
return collectionView
}()
我想要实现的目标是,当我在第一个单元格并在左侧滚动(contentOffset 为负)时,collectionView 滚动停止,当我在最后一个单元格时,collectionView 停止向正确方向滚动,我还想看细胞。
我尝试了不同的程序: 这个只有在第一次滚动后才阻止滚动视图,从不重新启用另一个方向的滚动:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.x == 0){
scrollView.isScrollEnabled = false
}
}
根据其他 StackOverflow 主题的建议:
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.x == 0){
collectionView.isScrollEnabled = false
}
collectionView.isScrollEnabled = true
}
但这只会阻止双向滚动。 我其实不知道如何解决这个问题。
【问题讨论】:
标签: ios swift uicollectionview uiscrollview uiscrollviewdelegate