我正在构建一个基于iOS的快速应用程序,限制用户每10分钟只提交一个请求。我现在很难将这三个点转换为代码
1-用户点击一个按钮 2-按钮被禁用10分钟 启用了3-按钮
我不期待完整的代码:)只是一个方法或建议。
谢谢
答案 0 :(得分:1)
请注意以下内容:timeInterval以秒为单位,因此60 * 10为10分钟。 UI更新需要在主线程上进行,这就是将时间块分派回main的原因。
@IBAction func touchButton(_ sender: AnyObject) {
button.isEnabled = false
Timer.scheduledTimer(withTimeInterval: 60*10, repeats: false) { _ in
DispatchQueue.main.async {
self.button.isEnabled = true
}
}
}
答案 1 :(得分:1)
首先,您需要将状态保留在持久数据中,让用户转到另一个控制器并返回,该按钮仍应禁用。
class PersistentData {
static let sharedInstance = PersistentData();
var disableSubmitButton = false
}
然后在您的控制器中
override func viewDidLoad() {
// each load need to check
if PersistentData.sharedInstance.disableSubmitButton == true {
submitButton.isEnabled = false
}
}
func onButtonClicked() {
// change button to disable
submitButton.isEnabled = false
// set state in persistent data so it can be the same wherever controller you go
PersistentData.sharedInstance.disableSubmitButton = true
// now set the timer to enable back
Timer.scheduledTimer(timeInterval: 10.0 * 60, target: self, selector: #selector(self.updateButtonState), userInfo: nil, repeats: false);
}
func updateButtonState() {
// update value in persitence data
PersistentData.sharedInstance.disableSubmitButton = false
// change button to enable back
submitButton.isEnabled = true
}