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
相关产品推荐
相关产品推荐

