我需要在點擊幾小時後禁用按鈕(15)。我無法迅速找到答案。此外,如果我關閉應用程序計時器將保持。當用戶改變iPhone的時間時,定時器仍然是相同的,這也是非常重要的。那麼我應該使用當地時間嗎?我對這個thx有新的建議。快速關閉按鈕一段時間
回答
ystack的答案是正確的想法,但我認爲你需要一個計時器。
正如@ystack所說,當用戶點擊一個按鈕時,計算應該重新啓動計時器的時間並保存到UserDefaults
。這將是目前的時間加上幾個小時。 (我們稱之爲buttonReenableTime
。)
然後禁用您的按鈕並啓動一個持續時間設置爲buttonReenableTime - now
的計時器。 (直到重新啓用時間的秒數)。使計時器變量變弱,並使用scheduledTimer
方法之一來創建它,並同時啓動它。
使計時器方法重新啓用按鈕。
每當您收到applicationDidBecomeActive
消息時,使舊定時器無效,從UserDefaults
讀取保存的值,然後重新計算buttonReenableTime - now
。如果它還在將來,請啓動一個新的計時器。如果它現在是在過去,重新啓用按鈕立即(這意味着,當你的應用程序被暫停或不運行在所有的時間過去了。)
(Date
有一個方法timeIntervalSinceReferenceDate
,可以讓你把一個日期變成雙。這是用於在日期值上進行數學計算。)
所以我將不得不做一個計時器,點擊按鈕時啓動它,將它保存在某個地方,然後比較定時器的值是高於15小時並停止。 –
您無法保存定時器。你要節省的是你的計時器應該開火的時間。然後,當你的應用程序再次激活時,你會檢查日期,看看時間是否已經過去。如果是這樣,您將立即重新啓用該按鈕。如果沒有,您將創建一個計時器設置爲在目標時間觸發。 –
- 商店時被點擊的按鈕
UserDefaults
- 禁用按鈕的交互通過設置
button.enabled = false
- 要重新啓用當按鈕後幾個小時,查看當前的時間差時間與
UserDefaults
中保存的時間相對應。如果超過幾小時,請重新啓用按鈕。
但是如果我更改設備的時間會怎麼樣。 –
@HonzaValta您可以探索爲當前標準服務器時間執行網絡提取,以消除對用戶設備時間的依賴。檢出:http:// stackoverflow。com/questions/9075303 /從蘋果服務器獲取日期和時間 – ystack
您應該使用簡單的端點從服務器返回時間戳。
NSDate()可能很容易被欺騙,這是大多數公司使用的典型工作。
接下來,您應該在本地存儲時間戳。對於簡單的實現,用戶默認值是最好的選擇,但是您可以使用領域或核心數據將其存儲爲獨立對象,具體取決於您的用例。只需檢查從服務器獲得的時間是否大於本地存儲的時間。
至於取消按鈕,如果它是一個uibutton,你可以使用button.enabled = false。或者如果你不使用uibutton,你可以使用button.userInteractionEnabled = false
- 1. 如何在點擊按鈕時快速關閉彈出窗口?
- 2. Android:在一段時間後關閉按鈕
- 3. 快速切換片段時按下按鈕會崩潰
- 4. Android按鈕點擊按鈕時關閉
- 5. 存儲按鈕按快速
- 6. 快速AVAudioplayer上按鈕按
- 7. 快速關閉視圖
- 8. 瞭解快速關閉
- 9. CppDepend.Console.exe非常快速關閉
- 10. 一段時間後關閉tkinter GUI
- 11. 一段時間後關閉瀏覽器
- 12. Python關閉了一段時間
- 13. Hivemq在一段時間後關閉
- 14. 關閉tkmessagebox一段時間後python
- 15. 關閉套接字()在一段時間
- 16. 單擊按鈕時快速增加
- 17. Raspberry pi raspbmc顯示屏在關閉一段時間後關閉
- 18. 添加關閉按鈕到字段集
- 19. 快速按鈕顯示
- 20. 快速按鈕變灰
- 21. PayPal快速結賬按鈕
- 22. 防止快速按鈕砸
- 23. 快速按鈕陣列
- 24. 快速按鈕的輪廓
- 25. iOS - 按下按鈕時關閉鍵盤
- 26. 強制關閉時按下按鈕
- 27. 活動在按下按鈕時關閉
- 28. 關閉按鈕上的鍵盤單擊該關閉片段
- 29. 禁用按鈕一段時間
- 30. 禁用按鈕一段時間
查看http://stackoverflow.com/questions/32528478/xcode-swift-how-to-disable-a-button-and-re-啓用-24小時後 – rmaddy