Ios 集合视图单元格慢速检测swift中的选定项目

Ios 集合视图单元格慢速检测swift中的选定项目,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,我将集合视图放入表格视图单元格,并使其可以显示在单元格上,但当我要选择集合单元格(更改颜色或打印单元格编号)时,选择功能不起作用,我需要多次点击单元格以使其处于选中状态。为什么单元格缓慢地检测所选项目?什么代码会影响要选择的单元格 这是选择收集单元的代码 override func awakeFromNib() { super.awakeFromNib() let layout: UICollectionViewFlowLayout = UICollectionViewFlow

我将集合视图放入表格视图单元格,并使其可以显示在单元格上,但当我要选择集合单元格(更改颜色或打印单元格编号)时,选择功能不起作用,我需要多次点击单元格以使其处于选中状态。为什么单元格缓慢地检测所选项目?什么代码会影响要选择的单元格

这是选择收集单元的代码

override func awakeFromNib() {
    super.awakeFromNib()

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    let width = UIScreen.main.bounds.width
    layout.scrollDirection = .vertical
    layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    layout.itemSize = CGSize(width: width/5, height: width/4)
    layout.minimumInteritemSpacing = 0
    layout.minimumLineSpacing = 0
    collectionView?.collectionViewLayout = layout
    collectionView?.delaysContentTouches = false

}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CategoryCollectionViewCell
    cell.cateImg.image = imageName[indexPath.row]
    cell.cateLabel.text! = nameArray[indexPath.row]
    return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    if let cell = collectionView.cellForItem(at: indexPath) as? CategoryCollectionViewCell {
        cell.cateImg.image = imageName2[indexPath.row]
        print("collectionViewCell selected \(indexPath)")
    }
}

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
    if let cell = collectionView.cellForItem(at: indexPath) as? CategoryCollectionViewCell {
        cell.cateImg.image = imageName[indexPath.row]
    }
}

项目zip链接:


AddViewCell.swift出现问题,请尝试在集合视图属性中取消选中此复选标记


在AddViewController上删除此代码后,我修复了此问题

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(AddExpenseVC.dismissKeyboard))
view.addGestureRecognizer(tap)

@objc func dismissKeyboard() {
    view.endEditing(true)
}

在AddViewController中,您正在将手势识别器添加到视图中,从而使每个用户手势都能被点击识别器检测到。您可以删除此手势:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(AddViewController.dismissKeyboard))
要解除键盘,可以实现TEBLEVEW委托方法:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        dismissKeyboard()
    }

试过了,还是不行。我上传了我的项目zip,也许可以更快地发现问题。不知道设置存在。谢谢这是在代码(swift)中执行此操作的方式:
collectionView.delaysContentTouches=false
我有完全相同的问题。我很难理解这个问题。祝你好运。