1
A
回答
2
我假設你只想忽略按鈕上的按鈕,如果它們太頻繁了,但你不需要設置按鈕在被忽略的情況下被禁用。 (如果要更改按鈕外觀,則需要使用NSTimer
或其他延遲操作來重新啓用按鈕,這是一個非常複雜的問題。)
如果將要求更改爲「至少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
}
相關問題
- 1. 每30秒按一次按鈕vba
- 2. 每60秒編程一次'按'按鈕
- 3. ReactJs:防止多次按下按鈕
- 4. 按下X秒按鈕?
- 5. 在java中每5秒最多按一次按鈕一次按下按鈕
- 6. 腳本 - 單擊按鈕,每x秒
- 7. 使用按鈕防止多次提交
- 8. JQuery - 每2秒點擊一次按鈕
- 9. ASP - 禁用按鈕以防止用戶點擊兩次
- 10. 如何防止用戶點擊兩次按鈕?解析Xcode Swift
- 11. Block按鈕在JavaScript中按X秒
- 12. 如果每次用戶點擊按鈕
- 13. 每次單擊按鈕時,如何防止程序覆蓋localStorage?
- 14. 如何防止每次單擊按鈕時重新加載JavaScript?
- 15. 如何模擬每2秒按下一次「Page Down」按鈕?
- 16. 如何防止用戶同時按下兩個按鈕?
- 17. 如何防止用戶按下GoBack硬件按鈕後返回?
- 18. 如何防止按鈕被多次按下?
- 19. 防止來自Android的按鈕被按下多次
- 20. Java。防止放大按鈕
- 21. 防止後退按鈕
- 22. 防止單選按鈕
- 23. 防止按鈕發回
- 24. 防止快速按鈕砸
- 25. 防止按鈕被同時按下
- 26. android防止popstack按回退按鈕
- 27. 防止按下多個按鈕
- 28. 防止在AlertDialog上按多個按鈕
- 29. 防止主頁按鈕按Android NDK
- 30. Swift 2.0:如何禁止當前用戶再次按下按鈕?