如何在UICollectionView中“仅用于单个手指”的单元上检测双击?

时间:2019-06-13 08:01:34

标签: swift uitapgesturerecognizer

我有一个UICollectionView,其中包含很多单元格。

我实现了两个功能:

  1. 轻按一个单元格:按A视图。
  2. 双击单元格:按B视图。

问题出在这里

如果我同时点击两个(或多个)单元格,则只会按 1 视图。在这种情况下还可以。

但是,如果我同时点按两个单元格(或更多),它会按 2(或更多)一张一张。这会导致意外行为,并且应用有时会崩溃。

在有2个以上的单元被点击时,我如何禁用其他单元格来两次接收,并且仅允许推送“ 1 B视图”

我添加了doubleTapGesture.numberOfTouchesRequired = 1,但这是行不通的。

这是我的代码:

@objc private func didReceiveDoubleTap(_ sender: ASCellNode) {
  self.doubleTapDelegate?.myCellWasDoubleTapped?(self)
}

override func didLoad() {
  super.didLoad()

  let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(MyCollectionCell.didReceiveDoubleTap(_:)))
  doubleTapGesture.numberOfTapsRequired = 2
  doubleTapGesture.delaysTouchesBegan = true
  self.view.addGestureRecognizer(doubleTapGesture)
}

1 个答案:

答案 0 :(得分:0)

看看是否可以通过布尔检查防止多次调用委托方法。

@objc private func didReceiveDoubleTap(_ sender: ASCellNode) {
  if !processing {
    processing = true // set processing = false where it's safe to do so.
    self.doubleTapDelegate?.myCellWasDoubleTapped?(self)
  }
}