0

当我触摸到tableview框架之外的点时,有没有办法调用tableview委托函数-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

我已经尝试覆盖 tableview 的 superview-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event并更改点并让事件继续传递给 tableview 和 tableview 的子视图。只需滚动事件工作但单击事件。

这是一个演示项目

4

1 回答 1

0

问题是 UITableView 不能让所有单元格保持活力。细胞可重复使用。可见区域之前和之后的几个单元格放置在视图上。尝试直接调用委托方法。

tableView.delegate?.tableView?(tableView, didSelectRowAt: indexPath)

如果您只想为表格视图上当前可用的单元格调用此方法。

     if let _ =  tableView.cellForRow(at: indexPath) {
        tableView.delegate?.tableView?(tableView, didSelectRowAt: indexPath)
    }

您可以轻松地将屏幕位置转换为单元格的索引。

于 2019-03-21T17:16:58.557 回答