微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 swift 中禁用 UITableCell 插入的选择?

如何解决如何在 swift 中禁用 UITableCell 插入的选择?

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

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

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

是否有适当的方法可以避免选择?

我觉得这是一种黑客行为,所以我想知道更正常的做事方式是什么。我有点希望 tableview 本身的属性从界面构建器中设置插入

解决方法

您始终可以覆盖 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)
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。