有没有办法检查是否单击了2个UIButton?

时间:2019-04-09 11:44:16

标签: ios swift

我有2组UIButtons,通过或失败。我需要检查两个组中是否都单击了任何UIButton(通过或失败)以向下滚动到下一个问题。

我正在使用具有4个参数的委托(我的4个按钮),并且正在进行if检查,但是从未进入if条件。这是我的一组按钮的外观:

enter image description here

这是我的代码:

func tappedOnVehicleOrTrailerButtons(vehiclePassBtn: UIButton, vehicleFailBtn: UIButton, trailerPassBtn: UIButton, trailerFailBtn: UIButton) {

    if (vehiclePassBtn.isTouchInside || vehicleFailBtn.isTouchInside) && (trailerPassBtn.isTouchInside || trailerFailBtn.isTouchInside) {

        scrollDown()
    }
}

这是委托方法:

// Check if the user press Pass or Fail btn for Vehicle or Trailer

@IBAction func passOrFailBtnTapped(_ sender: UIButton) {
          delegate?.tappedOnVehicleOrTrailerButtons(vehiclePassBtn: vehiclePassButton, vehicleFailBtn: vehicleFailButton, trailerPassBtn: trailerPassButton, trailerFailBtn: trailerFailButton)
}

除了if语句以外,还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

您将无法访问if语句中的代码。根据Apple的文档

  

isTouchInside是一个布尔值,指示当前跟踪的触摸事件是否在控件的范围内。

强调当前。因此,不会同时触摸两个按钮。

要实现目标,按钮需要某种状态,并且可以检查按钮是否被触摸。您可以简单地将按钮子类化并添加wasTouched属性,例如。 g。

class StateButton: UIButton {

    override func awakeFromNib() {
        super.awakeFromNib()
        self.addTarget(self, action: #selector(self.buttonWasTouched), for: .touchUpInside)
    }

    @objc private func buttonWasTouched() {
        self.isSelected = true
    }
} 

您的委托方法将如下所示:

func tappedOnVehicleOrTrailerButtons(vehiclePassBtn: StateButton, vehicleFailBtn: StateButton, trailerPassBtn: StateButton, trailerFailBtn: StateButton) {

    if (vehiclePassBtn.isSelected || vehicleFailBtn.isSelected) && (trailerPassBtn.isSelected || trailerFailBtn.isSelected) {

        scrollDown()
    }
}