如何防止在iOS中重复按下按钮?

Ful*_*ime 5 ios swift swift3

我想在最初成功按下后停止按下按钮一段时间.
我的第一个想法是使用计时器并禁用按钮一段时间,但我不确定如何实现这一点.

有人能指出我正确的方向吗?

我正在使用swift.

mat*_*att 7

无需计时器.不需要禁用.

单击该按钮时,将当前日期存储在实例属性中.再次点击按钮时,就在将当前日期存储在同一实例属性中之前,从新日期中减去旧日期.如果它们距离太近,也不要执行按钮的动作,无论它是什么.

换句话说,只有当两个时间戳相距很远时才会采取行动.

这称为去抖动,是一种常用技术.进行搜索,你会在这里找到很多讨论.


der*_*ida 5

您不需要计时器,可以等待几秒钟并再次激活按钮。

所以:

var ButtonIsActiv = false

func buttonPressed(button: UIButton) {
    if ButtonIsActiv == false {
       // do something with your button
       ButtonIsActiv = true

       // after 3 seconds, activate it again

       DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) {
           ButtonIsActiv = false
       }

    } else {
       // your button is not activated
    }
}
Run Code Online (Sandbox Code Playgroud)


Nik*_*Kov 5

斯威夫特3.0

我认为此扩展很方便:

extension UIButton {
    func preventRepeatedPresses(inNext seconds: Double = 1) {
        self.isUserInteractionEnabled = false
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + seconds) {
            self.isUserInteractionEnabled = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用:

@IBAction func pressedButton(_ sender: UIButton) {
     sender.preventRepeatedPresses()
     // do the job
}
Run Code Online (Sandbox Code Playgroud)