提问者:小点点

自定义tableview单元格中的TouchesBegen取消DidSelectRowIndexPath函数


我有带有自定义单元格的tableview。在自定义单元格中,我有一个视图,它是自定义UIView类。在这个自定义UIView类中,我重写了TouchesBegind和touchesEnded方法,以便在按下视图时更改自定义视图的背景颜色。在tableview中,单元格TouchesBegind和touchesEnded方法可以完美地工作。当我按下tableview单元格时,视图的背景正在更改。但在本例中,tableView的didselectrowat函数不工作。此自定义UiView类取消didSelectRowat函数。这个问题有什么解决办法吗?

自定义类如下:

BildIrisitEmbackGround类:UIView{

override init(frame: CGRect) {
    super.init(frame: frame)

}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.backgroundColor = UIColor(red: 216/255, green: 216/255, blue: 216/255, alpha: 0.3)
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.05, execute: {
        ( self.backgroundColor = UIColor(red: 216/255, green: 216/255, blue: 216/255, alpha: 0.0))
    })
}

}

和didSelectrowat函数:

函数tableView(_tableView:UITableView,didSelectRowAt IndexPath:IndexPath){print(IndexPath.Row)}

我希望打印TableView选定行。但什么都不是印刷。


共1个答案

匿名用户

在touchBegan()方法内使用super方法。当一个类从另一个类继承时,继承的类称为子类,继承的类称为超类。这里的超类是。添加后,它将覆盖

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.backgroundColor = UIColor(red: 216/255, green: 216/255, blue: 216/255,alpha: 0.3)
    super.touchesBegan(touches, with: event)
}