Swift - 水平CollectionView中的滚动停止在UIScrollView中工作

时间:2016-06-12 06:54:10

标签: ios uiscrollview uicollectionview

这是一个棘手的问题......

我在View Controller中有一个ScrollView,里面有多个CollectionViews。 CollectionViews设置用于水平滚动的个人资料照片。

我希望ScrollView滚动垂直,但不能滚动。我使用以下代码使用ScrollView执行此操作:

    func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.x>0 {
        scrollView.contentOffset.x = 0
    }

    if scrollView.contentOffset.x < 0 {
        scrollView.contentOffset.x = 0
    }
}

这按预期工作,我使用UIScrollViewDelegate并将ScrollView设置为:

self.scrollView.delegate = self

现在棘手的部分...... CollectionViews不再水平滚动。我假设这是因为父ScrollView正在接管视图,和/或上面的代码也阻止了CollectionViews中的水平滚动。

任何人都对我如何实现我的目标有一些想法?

干杯, 亚伦

2 个答案:

答案 0 :(得分:2)

在scrollViewDidScroll方法

中尝试这样的方法
func scrollViewDidScroll(scrollView: UIScrollView) {
    if (scrollView == self.scrollView) {
        if scrollView.contentOffset.x>0 {
            scrollView.contentOffset.x = 0
        }

        if scrollView.contentOffset.x < 0 {
            scrollView.contentOffset.x = 0
        }
    }
}

因为collectionView也有scrollView的委托 希望这会对你有所帮助。

答案 1 :(得分:0)

我建议您使用UICollectionView代替UIScrollView。看起来您的水平滚动图像集非常相似,因此将每个图像表示为高级父UICollectionView的原型单元更为逻辑。这也将以自然的方式修复您的滚动问题=)

更准确地说,您将有一个 UICollectionView,其滚动方向设置为垂直,拥有内部 {UICollectionViewCell UICollectionView {1}}将滚动方向设置为水平。

以下是如何使用故事板(查看第二个原型单元格)来执行此操作的示例:

enter image description here

在您的情况下,您只需要使用图片填充孩子UICollectionView,而不是我的示例中使用的标签。

希望,这会对你有所帮助。祝你好运!