暂时暂停用户发出其他请求

时间:2016-10-26 23:56:28

标签: nsdate swift3

我正在构建一个基于iOS的快速应用程序,限制用户每10分钟只提交一个请求。我现在很难将这三个点转换为代码

1-用户点击一个按钮 2-按钮被禁用10分钟 启用了3-按钮

我不期待完整的代码:)只是一个方法或建议。

谢谢

2 个答案:

答案 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
}