gpt4 book ai didi

swift - 在自定义单元格类中禁用 collectionView 用户交互或滚动

转载 作者:搜寻专家 更新时间:2023-11-01 07:01:09 26 4
gpt4 key购买 nike

我在 Root View 中有一个 UICollectionView

UICollectionView 有一个名为 HomeCell 的自定义单元格。

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath) as! HomeCell

在 HomeCell 中,我添加 bgView 和标题,如下所示:

HomeCell 类:

class HomeCell: UICollectionViewCell {

var bgView = UIView()
var title = UILabel()

override init(frame: CGRect) {
super.init(frame: frame)

bgView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
bgView.layer.cornerRadius = 20.0
bgView.backgroundColor = UIColor.gray

title.text = "Test"
title.textAlignment = .center
title.frame = CGRect(x: 0, y: 210, width: 200, height: 40)
title.textColor = .black

let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTapCollapse(_:)))
bgView.addGestureRecognizer(tap)

self.addSubview(bgView)
self.addSubview(title)
}

@objc func handleTapCollapse(_ sender: UITapGestureRecognizer) {

print("disabled")
// her I want to disable my collectionView

}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

我想在触摸 bgView 时禁用 UICollectionView 滚动。

我在 didSelectItemAt 中尝试过,但没有成功。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if indexPath.row == 1 {
animateCamerCell()
}
}

这可能吗?如果不是,这个问题的解决方案是什么?

最佳答案

您可以在不采用任何协议(protocol)的情况下执行此操作。

您可以使用当前 UICollectionviewweak var,并在 handleTapCollapse 函数 中禁用滚动。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath) as! HomeCell
cell.collectionView = collectionView
}

HomeCell 中:

class HomeCell: UICollectionViewCell {

weak var collectionView:UICollectionView?

override init(frame: CGRect) {
super.init(frame: frame)

}
@objc func handleTapCollapse(_ sender: UITapGestureRecognizer) {
print("disabled")
collectionView?.isScrollEnabled = false
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

关于swift - 在自定义单元格类中禁用 collectionView 用户交互或滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com