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