如何检查哪个collectionview是否快速滚动

Mob*_*tar 2 uiscrollview ios uicollectionview swift

我正在开发的应用程序在一个ViewController中包含3个UICollectionViews。我可以知道是否使用此代码滚动了UICollectionView

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    let isScrolling: Bool = colView.isDragging || colView.isDecelerating
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我想知道哪个UICollectionView是否在scrollViewDidEndDragging中滚动。

但是问题是我不知道以前滚动过哪个collectionview。就像我想知道colview2是否在滚动。有谁知道这个解决方案吗?我在Google和Stackoverflow上搜索了解决方案,但我认为没有针对此问题的解决方案。

帮助将不胜感激。

Ekr*_*que 5

您可以通过将标签设置为CollectionView和Scroll View Delegate方法来执行scrollViewDidEndDecelerating此操作,这是代码:

  1. 首先在您的ViewDidLoad方法中的SetView顶部设置标签:
firstCollectionView.tag = 1 
secondCollectionView.tag = 2 
thirdCollectionView.tag = 3
Run Code Online (Sandbox Code Playgroud)

2.创建三个Property Observer变量,如下所示viewDidload

   var whichCollectionViewScrolled = "" {
        willSet{
            print(newValue)
        }
    }

    var isFirstCollectionViewScrolled = false {
        willSet{
            print("First CollectionView Scrolled : \(newValue)")
        }
    }
    var isSecondCollectionViewScrolled = false {
        willSet{
            print("Second CollectionView Scrolled : \(newValue)")
        }
    }
    var isthirdCollectionViewScrolled = false {
        willSet{
            print("Third CollectionView Scrolled : \(newValue)")
        }
    }
Run Code Online (Sandbox Code Playgroud)

1.最后在您的scrollViewDelegate方法内部强制转换您的scrollview实例,并检查标签值,如下所示:

extension ViewController: UIScrollViewDelegate {
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

        if let collectionView = scrollView as? UICollectionView {
            switch collectionView.tag {
            case 1:
                whichCollectionViewScrolled = "First"
                isFirstCollectionViewScrolled = true
                isSecondCollectionViewScrolled = false
                isthirdCollectionViewScrolled = false
            case 2:
                whichCollectionViewScrolled = "second"
                isFirstCollectionViewScrolled = false
                isSecondCollectionViewScrolled = true
                isthirdCollectionViewScrolled = false
            case 3:
                whichCollectionViewScrolled = "Third"
                isFirstCollectionViewScrolled = false
                isSecondCollectionViewScrolled = false
                isthirdCollectionViewScrolled = true
            default:
                whichCollectionViewScrolled = "unknown"
            }

        } else{
            print("cant cast")
        }
    }
Run Code Online (Sandbox Code Playgroud)

希望对您有帮助。


Shr*_*hat 5

滚动视图是 UICollectionView 的超类。只需检查您存储的滚动视图和集合视图是否是同一实例。

if collectionView === scrollView {
}
Run Code Online (Sandbox Code Playgroud)

像这样。