暂时中止用户发出另一个请求
Temporarily suspend user from making another request
我正在构建一个基于 swift iOS 的应用程序,该应用程序限制用户每 10 人只能提交一个请求 minutes.I 现在将这三点翻译成代码
1- 用户点击按钮
2- 按钮禁用 10 分钟
3- 按钮已启用
我不期待完整的代码 :) 只是一种方法或建议。
谢谢
注意以下几点:timeInterval 以秒为单位,所以 60*10 是 10 分钟。 UI 更新需要在主线程上发生,这就是时间块被分派回主线程的原因。
@IBAction func touchButton(_ sender: AnyObject) {
button.isEnabled = false
Timer.scheduledTimer(withTimeInterval: 60*10, repeats: false) { _ in
DispatchQueue.main.async {
self.button.isEnabled = true
}
}
}
首先,您需要将状态保存在持久数据中,以防用户转到另一个控制器并返回,该按钮仍应禁用。
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
}
我正在构建一个基于 swift iOS 的应用程序,该应用程序限制用户每 10 人只能提交一个请求 minutes.I 现在将这三点翻译成代码
1- 用户点击按钮 2- 按钮禁用 10 分钟 3- 按钮已启用
我不期待完整的代码 :) 只是一种方法或建议。
谢谢
注意以下几点:timeInterval 以秒为单位,所以 60*10 是 10 分钟。 UI 更新需要在主线程上发生,这就是时间块被分派回主线程的原因。
@IBAction func touchButton(_ sender: AnyObject) {
button.isEnabled = false
Timer.scheduledTimer(withTimeInterval: 60*10, repeats: false) { _ in
DispatchQueue.main.async {
self.button.isEnabled = true
}
}
}
首先,您需要将状态保存在持久数据中,以防用户转到另一个控制器并返回,该按钮仍应禁用。
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
}