我需要在点击几小时后禁用按钮(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. 快速切换片段时按下按钮会崩溃
- 3. 快速AVAudioplayer上按钮按
- 4. 存储按钮按快速
- 5. 快速关闭视图
- 6. CppDepend.Console.exe非常快速关闭
- 7. 了解快速关闭
- 8. Python关闭了一段时间
- 9. 一段时间后关闭tkinter GUI
- 10. Hivemq在一段时间后关闭
- 11. 关闭tkmessagebox一段时间后python
- 12. 一段时间后关闭浏览器
- 13. 强制关闭时按下按钮
- 14. 活动在按下按钮时关闭
- 15. 快速按钮的轮廓
- 16. PayPal快速结账按钮
- 17. 快速按钮显示
- 18. 快速按钮变灰
- 19. 锁定保存按钮一段时间
- 20. 禁用按钮一段时间
- 21. Firebug关闭按钮
- 22. Fancybox默认关闭按钮 - 关闭按钮功能
- 23. 关闭按钮不关闭表格
- 24. SimpleModal - 用关闭按钮关闭iframe
- 25. 我想关闭就关闭按钮
- 26. 当试图移动到前一个片段时,应用程序在关闭按钮时关闭
- 27. 如何关闭点击浮动动作按钮时的片段
- 28. App Force在按钮单击时关闭
- 29. hoverIntent +关闭按钮(问题与超时?)
- 30. 单击按钮时不要关闭NSAlert
查看http://stackoverflow.com/questions/32528478/xcode-swift-how-to-disable-a-button-and-re-启用-24小时后 – rmaddy