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上搜索了解决方案,但我认为没有针对此问题的解决方案。
帮助将不胜感激。
您可以通过将标签设置为CollectionView和Scroll View Delegate方法来执行scrollViewDidEndDecelerating此操作,这是代码:
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)
希望对您有帮助。
滚动视图是 UICollectionView 的超类。只需检查您存储的滚动视图和集合视图是否是同一实例。
if collectionView === scrollView {
}
Run Code Online (Sandbox Code Playgroud)
像这样。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |