我的UITableView
UITableViewCell
accessoryView
为UIButton
。当用户按下此UIButton
时,将触发操作。它工作得很好,但有一个不方便:accessoryView
没有粘在单元格的右边缘,所以当用户按下单元格的最右边时,按钮不会被触发而且更糟糕的是:单元格是选中,触发不需要的操作。
以下是我定义细胞的方法:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier")
let accessoryButton = MyCustomAccessoryView(frame: CGRect(x: 0.0, y: 0.0, width: 45.0, height: 45.0))
accessoryButton.addTarget(self, action: #selector(MyController.accessoryButtonTapped(_:)), for: .touchUpInside)
cell?.accessoryView = accessoryButton
return cell
}
MyCustomAccessoryView.swift:
class MyCustomAccessoryView: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.red
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
结果如下:
所以我的问题是:有没有办法禁用UITableViewCell
最右边的用户互动?
答案 0 :(得分:0)
您应该添加按钮作为您单元格内容视图的子视图。因此,您可以为按钮设置所需的框架,cell
将不会显示额外的空间。
因此,将按钮添加为subview
的{{1}}。
如果你想将按钮设置为附件视图,那么在第二件事就是在右侧添加另一个contentview
或blank label
,这样它就不会得到blank view
!
以上解决方案对您来说更好,而不是管理复杂的东西,例如 - 禁用特定区域的click
等等!