【问题标题】:Swift 4 - Action while button pressed - loop?Swift 4 - 按下按钮时的动作 - 循环?
【发布时间】:2018-08-10 04:28:39
【问题描述】:

您好,我想在按下按钮时向我的覆盆子上的电机发送命令。例如:当我按下按钮时,电机应该运行。它是一个步进电机,所以我想要长按和正常的轻按命令。普通点击很容易并且可以工作,但是长按(重复命令)不起作用。我用长按手势识别器和循环尝试过,但它不起作用 这是我的代码。

@objc func motorLongTap(_ sender: UIGestureRecognizer){        
    while (sender.state == .began) && (sender.state != .ended){
    //send command
    }
}

循环不会停止。希望有人能帮助我。 最好的问候

编辑:问题已解决。 感谢 MadProgrammer 的解决方案

现在是按下操作时获得“循环”的代码。

var buttonTimer:Timer!

@objc func motorLongTap(_ sender: UIGestureRecognizer){        
    if sender.state == .ended{
    buttonTimer.invalide()
    }
    else sender.state == .began{
    buttonTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(longTapMotor), userInfo: nil, repeats: true)
    }

}
    @objc func longTapMotor() {
        //send command
    }

【问题讨论】:

  • 你需要一个“开始”和“结束”命令,因为你不能在主线程的上下文中这样循环,它会阻止 UI 处理新的输入事件。您可以使用另一个线程或Timer,它以设定的时间间隔重复,您可以在触摸事件结束时使其无效

标签: ios swift button gesture


【解决方案1】:

你的逻辑不正确。试试这个:

@objc func motorLongTap(_ sender: UIGestureRecognizer){        
    if sender.state != .ended{
        //send command
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多