如何解决如何在 swift 中禁用 UITableCell 插入的选择?
我通过插入内容在 UITableViewCell 之间创建了假空间。
contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0,left: 0,bottom: 8,right: 0))
然而,UITableCell 仍然接受基于在单元格之间进行选择时的选择事件,因为即使是非插入的 8 个像素仍然包含在 UITableViewCell 中。
是否有适当的方法可以避免选择?
我觉得这是一种黑客行为,所以我想知道更正常的做事方式是什么。我有点希望 tableview 本身的属性从界面构建器中设置插入
解决方法
您始终可以覆盖 tableView 单元格中的 hitTest
或 pointInside
。您已经提到您正在设置 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 举报,一经查实,本站将立刻删除。