gpt4 book ai didi

ios - 防止用户每秒按下按钮 x 次

转载 作者:可可西里 更新时间:2023-11-01 01:00:01 24 4
gpt4 key购买 nike

我在一个应用程序中有一个 UIButton,它允许用户向 API 发送请求。

如何防止用户每秒按此按钮超过 X 次?

最佳答案

我假设您只想忽略按钮上过于频繁的点击,但您不需要将按钮设置为在忽略点击时显示为禁用状态。 (如果你想改变按钮的外观,你需要使用 NSTimer 或其他延迟 Action 来重新启用按钮,这是一个非常复杂的问题。)

如果将要求更改为“点击之间至少间隔 1/X 秒”,它会简单一些。例如,我们不再允许每秒最多点击 4 次,而是忽略前一次点击后不到 1/4 秒的点击。

要实现此要求,请存储最后一次点击的时间。当点击到达时,查看自上次点击后是否过去了 1/X 秒。如果没有,请忽略点击。

    private let minimumTapInterval = 1 / CFTimeInterval(4)
private var lastTapTime = CFAbsoluteTime(0)

@IBAction func buttonWasTapped(sender: AnyObject?) {
let now = CFAbsoluteTimeGetCurrent()
guard now >= lastTapTime + minimumTapInterval else { return }
lastTapTime = now
sendAPIRequest()
}

如果你真的想实现“每秒不超过 X 次点击”的要求,你可以存储接受的点击次数。当有新的水龙头进来时,丢弃任何早于一秒的存储时间。如果还有至少 X 个存储时间,则忽略新的点击。

    private let maxTapsPerSecond = 4
private var tapTimes = [CFAbsoluteTime]()

@IBAction func buttonWasTapped(sender: AnyObject?) {
let now = CFAbsoluteTimeGetCurrent()
let oneSecondAgo = now - 1
tapTimes = tapTimes.filter { $0 >= oneSecondAgo }
// All elements of tapTimes are now within the last second.
guard tapTimes.count < maxTapsPerSecond else { return }
tapTimes.append(now)
sendAPIRequest
}

关于ios - 防止用户每秒按下按钮 x 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751782/

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