You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift如何编程检测tableView cell被点击的特定区域

检测UITableView Cell点击区域的实现方法

实现逻辑非常简单,只需拿到点击位置在cell坐标系中的坐标,和cell的尺寸做对比即可,具体实现如下:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("整个cell被点击")
    // 获取当前被点击的cell
    guard let cell = tableView.cellForRow(at: indexPath) else { return }
    // 获取点击位置在cell自身坐标系中的坐标
    let tapLocation = tableView.panGestureRecognizer.location(in: cell)
    // 判断是否点击左半区域
    if tapLocation.x < cell.bounds.width / 2 {
        print("cell左半区域被点击")
        // 此处写左半区域点击的业务逻辑
    } else {
        // 此处可补充右半区域点击的业务逻辑
    }
}

注意事项

  • 如果cell内部添加了开启了用户交互的子控件,会拦截cell的点击事件,需将对应子控件的isUserInteractionEnabled属性设为false,或者将点击事件透传给cell,否则didSelectRowAt方法不会触发
  • 如果需要检测点击是否落在cell内的特定子控件区域,只需用子控件的frame判断是否包含点击坐标即可,示例:if cell.customSubview.frame.contains(tapLocation) { // 点击了指定子控件 }

内容的提问来源于stack exchange,提问作者CoderChick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:21:02