如何禁用在 swift 中插入表格单元格时的选择?

how to disable selection on inset of UITableCell in swift?

我通过插入内容在 UITableViewCell 之间创建了假 space。

contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: 8, right: 0))

但是,UITableCell 仍然接受基于单元格之间选择的选择事件,因为即使非插入的 8 像素仍然包含在 UITableViewCell 中。

是否有正确的方法来避免选择?

我觉得这是一个 hack,所以我想知道更正常的做事方式是什么。我有点希望 tableview 本身上的 属性 设置来自 interface builder

的插图

您始终可以在 tableView 单元格中覆盖 hitTestpointInside。您已经提到您正在设置 contentView.frame 假设其更新正常,您可以简单地使用以下实现之一

class SOTableViewCell: UITableViewCell {
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        if contentView.frame.contains(point) {
            return super.hitTest(point, with: event) /*return self*/
        }
        return nil
    }
}

或者

class SOTableViewCell: UITableViewCell {
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return contentView.frame.contains(point)
    }
}