gpt4 book ai didi

iOS:允许用户交互,但在滚动时禁止选择 UICollectionView 中的其他单元格

转载 作者:搜寻专家 更新时间:2023-11-01 06:25:51 25 4
gpt4 key购买 nike

我已经使用 Collection View 实现了水平菜单。在我选择了一个单元格并滚动 collectionView 的情况下,我希望其他单元格在滚动结束之前不可选,同时保持先前选择的单元格的选择状态。只需设置 allowsSelection = false 即可取消选择先前选择的单元格。我已经实现了以下方法来检测滚动是否完成:

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if collectionView.isScrollEnabled {
isDragging = true
collectionView.isUserInteractionEnabled = false
}
}

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !decelerate {
collectionView.isUserInteractionEnabled = true
}
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
collectionView.isUserInteractionEnabled = true
}

但是,设置 isUserInteractionEnabled = false 意味着我无法在快速滑动的情况下手动提前停止滚动,这是不希望的。我怎样才能做到这一点?谢谢你。感谢您的帮助。

最佳答案

解决方案:

您可以在不启用/禁用用户交互的情况下实现这一点。

  1. 使 isDragging 成为全局变量。

    var isDragging: Bool = false

  2. UIScrollViewDelegate 方法进行以下更改:

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    self.isDragging = true
    }

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if !decelerate {
    self.isDragging = true
    }
    else {
    self.isDragging = false
    }
    }

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    self.isDragging = false
    }
  3. 将以下逻辑添加到 UICollectionViewDelegatedidSelectItemAt 方法中:

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    if !self.isDragging {
    // Your code related to cell selction here.
    }
    }

关于iOS:允许用户交互,但在滚动时禁止选择 UICollectionView 中的其他单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952182/

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