暂时中止用户发出另一个请求

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
}