Swift 识别 tableView 单元格点击区域

Swift recognize tableView cell tap area

如何以编程方式检测 tableView 单元格的特定区域?

例如,如果用户点击 tableView Cell 的左半边,则会调用 didSelectRowAt 并识别左半边的 cell。

伪:

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

    print("Entire cell tapped")

    if(left side of cell pressed){
      //cell.width /2
      print("left side half of cell pressed")
   }
}

根据 帖子,添加手势识别器可能会与 TableView 交互发生冲突。

因此,要实现您的要求,您必须将手势识别器添加到 UITableViewCellcontentView 并获取手势的点击位置。为此,

  1. 首先,定义 UITapGestureRecognizerUITableViewCell class 中的操作。参考以下代码
    lazy var tap = UITapGestureRecognizer(target: self, action: #selector(didTapScreen))
.
.
.
    // Gesture action
    @objc func didTapScreen(touch: UITapGestureRecognizer) {
        let xLoc = touch.location(in: self.contentView).x // Getting the location of tap
        if xLoc > contentView.bounds.width/2 {
            // RIGHT
        } else {
            // LEFT
        }
    }
  1. 在自定义单元格的init()方法中添加如下内容
    override init(frame: CGRect) {
        super.init(frame: frame)
        tap.numberOfTapsRequired = 1
        contentView.addGestureRecognizer(tap)
        // Other setups
    }

我尝试了 UICollectionViewCell 中的代码并得到了以下输出