从自定义TableViewCell实现3DTouch

时间:2019-01-16 13:57:17

标签: swift uikit 3dtouch

我使用的是自定义tableViewCell,其中有两个按钮可以将值递增到数组。我的目标是通过每个按钮中的3Dtouch事件,使按钮减小值。

我一直在搜索Apple的开发人员文档,并尝试使用

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

但这似乎并不一致(不是每次触摸都被记录下来)

我的自定义表格单元格如下:

protocol RegistarColheitasTableViewCellDelegate {
    func buttonTapped(sender: RegistarColheitasTableViewCell, button: UIButton)
}

class RegistarColheitasTableViewCell: UITableViewCell {

    @IBOutlet weak var hasteLabel: UILabel!
    @IBOutlet weak var quantidadeLabel: UILabel!
    @IBOutlet weak var baldeButton: UIButton!
    @IBOutlet weak var individualButton: UIButton!

    var delegate: RegistarColheitasTableViewCellDelegate?

    override func awakeFromNib() {
        self.selectionStyle = .none
        hideButtons(toggle: true)
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

    @IBAction func ButtonTapped(_ sender: UIButton) {
        delegate?.buttonTapped(sender: self, button: sender)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // super.touchesBegan(touches, with: event)
        touches.forEach { (touch) in
            if(touch.force >= 1){
                print("3D Touch?")
            }
        }
    }


    func hideButtons(toggle: Bool){
        baldeButton.isHidden = toggle
        individualButton.isHidden = toggle
    }

    func updateWith(quantidade: Int) {
        self.quantidadeLabel.text = String(quantidade)

    }
}

使用touches开始,我可以注册touch事件并在控制台上打印一些内容。但是,即使使用普通水龙头,这似乎仍然有效。 我希望按钮在3dtouched时将其当前状态更改为递减器,而不是递增器。

谢谢

0 个答案:

没有答案