簡體   English   中英

Swift-在水平CollectionView中滾動在UIScrollView中停止工作

[英]Swift - Scroll in Horizontal CollectionView stopped working inside a UIScrollView

這是一個棘手的...

我在一個View Controller里面有一個ScrollView,里面有多個CollectionViews。 為個人資料照片設置了CollectionView,以進行水平滾動。

我希望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中的水平滾動。

有人對我如何實現期望的目標有一些想法嗎?

干杯,亞倫

在您的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的委托。
希望這會幫助你。

我建議您使用UICollectionView而不是UIScrollView 似乎您的水平滾動圖像集合非常相似,因此在邏輯上將每個圖像表示為高級父UICollectionView的原型單元會更加UICollectionView 這也將自然解決滾動問題=)

更准確地說,您將擁有一個 UICollectionView ,其Scroll方向設置為Vertical,擁有一個UICollectionViewCell ,其內部 UICollectionView的Scroll方向設置為Horizo​​ntal。

以下是使用情節提要(例如,查看第二個原型單元)如何執行此操作的示例:

在此處輸入圖片說明

就您而言,您只需要在子UICollectionView填充圖像,而不是在我的示例中使用的標簽。

希望這個能對您有所幫助。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM