gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 10:31:53 26 4
gpt4 key购买 nike

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

我正在使用带有 4 个参数(我的 4 个按钮)的委托(delegate),并且我正在执行 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()
}
}

这是委托(delegate)方法:

// 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 语句?

最佳答案

if 语句中的代码将永远不会被访问。根据 Apple 的文档

isTouchInside is a Boolean value indicating whether a tracked touch event is currently inside the control’s bounds.

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

为了实现你的目标,你的按钮需要某种状态,你可以检查按钮是否被触摸。您可以简单地子类化一个按钮并添加一个 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
}
}

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

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

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

scrollDown()
}
}

关于ios - 有没有办法检查是否单击了 2 个 UIButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55592099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com