Ios 检查正在滚动哪个UIScrollView?

Ios 检查正在滚动哪个UIScrollView?,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,我是iOS开发新手,不知道scrollViewDidScroll方法是如何工作的。正如教程所说,我正在使用该方法连接UIViewPager(屏幕截图中的顶部图像滑块)和UIPageControl。但遗憾的是,每当我滚动UICollectionViews(屏幕截图中的鞋子)时,就会调用该方法,页面控制就会受到不必要的影响。如果我能在scrollViewDidScroll方法中区分滚动的视图(UIScrollView或UICollectionView),那就太好了 下面是scrollViewDid

我是iOS开发新手,不知道
scrollViewDidScroll
方法是如何工作的。正如教程所说,我正在使用该方法连接
UIViewPager
(屏幕截图中的顶部图像滑块)和
UIPageControl
。但遗憾的是,每当我滚动
UICollectionViews
(屏幕截图中的鞋子)时,就会调用该方法,页面控制就会受到不必要的影响。如果我能在
scrollViewDidScroll
方法中区分滚动的视图(
UIScrollView
UICollectionView
),那就太好了

下面是
scrollViewDidScroll
方法

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let total = scrollView.contentSize.width - scrollView.bounds.width
    let offset = scrollView.contentOffset.x
    let percent = Double(offset / total)

    let progress = percent * Double(self.sliderImages.count - 1)
    pageControl.progress = progress
}

奇怪的是,参数
scrollView
始终是scrollView(图中的顶部),即使我滚动了UICollectionView(图中的鞋子)

您可以检查哪个
scrollView
正在像这样滚动:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView === yourCollectionView {
        //Do something
    }
    //or you can use this
    if scrollView.isKind(of: UICollectionView.self) {
        //Do something
    }
}

您应该使用
==
来测试两个对象是否是相同的对象,而不是
=
=
执行指针检查,
=
测试它们的属性是否都相同。@vacawama我刚刚想到了这一点,并在我的集合视图上进行了测试,
=
有效!你能告诉我们一个例子吗?很可能,
UIViewControlers
的平等只是在引擎盖下使用
=
。总的来说,它们不一样。可以构造一个示例,例如
class Foo:equalable{static func==(lhs:Foo,rhs:Foo)->Bool{return lhs.bar==rhs.bar}var bar=13}
,并显示
Foo()==Foo()
true
,但
Foo()==Foo()
为false。
如果scrollView为UICollectionView,则它可以工作,但当我在scrollView中放置标记时。我在调试模式下检查。我得到了同样的标签。不知道为什么。。