我有2组UIButtons
,通过或失败。我需要检查两个组中是否都单击了任何UIButton(通过或失败)以向下滚动到下一个问题。
我正在使用具有4个参数的委托(我的4个按钮),并且正在进行if
检查,但是从未进入if
条件。这是我的一组按钮的外观:
这是我的代码:
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
语句以外,还有其他方法吗?
答案 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()
}
}