我想在最初成功按下后停止按下按钮一段时间.
我的第一个想法是使用计时器并禁用按钮一段时间,但我不确定如何实现这一点.
有人能指出我正确的方向吗?
我正在使用swift.
无需计时器.不需要禁用.
单击该按钮时,将当前日期存储在实例属性中.再次点击按钮时,就在将当前日期存储在同一实例属性中之前,从新日期中减去旧日期.如果它们距离太近,也不要执行按钮的动作,无论它是什么.
换句话说,只有当两个时间戳相距很远时才会采取行动.
这称为去抖动,是一种常用技术.进行搜索,你会在这里找到很多讨论.
您不需要计时器,可以等待几秒钟并再次激活按钮。
所以:
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)
我认为此扩展很方便:
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)
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |