Как предотвратить двойной щелчок по кнопке - PullRequest
0 голосов
/ 19 сентября 2018

как предотвратить двойной щелчок по кнопке в случае http-запроса, я пробовал этот код, но при двойном щелчке мой запрос отправляется на сервер дважды.пожалуйста, дайте мне решение

 @IBAction func btnSendForgetPwdAction(_ sender: UIButton) {

  sender.isUserInteractionEnabled = false

  if checkIfFieldsAreFilledInforgetPwd(){
     self.showProgressView()
     var requestParams: Dictionary<String, String> = [:]
     requestParams["email"] = textFieldEmailForgetPWD.text

     let url = Constants.URLs.PREFIX_URL+Constants.URLs.FORGET_PASSWORD

     DataHelper.sharedInstance.alamofireManager().request(url, method: .post, parameters: requestParams, encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        self.hideProgressView()

        switch(response.result) {
        case .success(let JSON):
           if let response = JSON as? NSDictionary{
              print("JSON  \(response)")
              if   let isSuccess = response.object(forKey: "success") as? Bool{

              }
              // i have some code here


  Timer.scheduledTimer(withTimeInterval: 2, repeats: false, block: { [weak sender] timer in

     sender?.isUserInteractionEnabled = true
  })

1 Ответ

0 голосов
/ 19 сентября 2018

Если вы делаете асинхронный вызов веб-службы, вам нужно подождать, пока это не будет завершено, до повторного включения вашей кнопки. Не используйте таймер, так как вы не знаете, сколько времени потребуется на завершение вызова.

Не видя вызова с вашего сервера, я не могу дать полный ответ, но выдолжен делать что-то вроде этого ...

@IBAction func btnBackAction(_ sender: UIButton) {

    sender.isUserInteractionEnabled = false

    Webservice().loadData { result in  // Your async server call 

        sender.isUserInteractionEnabled = true

        // Handle the result

       // performSegue goes here if you need to wait until your server call is complete  
       self.performSegue(withIdentifier: "HomePageViewController", sender: nil) 
    }
}
...