2016-08-24 32 views
0

我創建了一個簡單的登錄請求與UIView的動畫和Alamofire在POST登錄請求奇怪的問題

Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON, headers: nil).validate().responseJSON { (response) in 
     if response.result.isSuccess { 
      let result = response.result.value 
      print(result) 
      let token = response.response?.allHeaderFields["Access-Token"] as! String 
      print(token) 
      self.performSegueWithIdentifier("toFirstOnboardingFromLogin", sender: nil) 
     } 
     else{ 
      self.emailTextField.layer.borderColor = UIColor.redColor().colorWithAlphaComponent(0.9).CGColor 
      self.passwordTextField.layer.borderColor = UIColor.redColor().colorWithAlphaComponent(0.9).CGColor 
      self.emailTextField.layer.borderWidth = 1.0 
      self.passwordTextField.layer.borderWidth = 1.0 
      self.passwordTextField.shake() 
      self.emailTextField.shake() 
      self.performSegueWithIdentifier("toFirstOnboardingFromLogin", sender: nil) 
     } 
    } 

的賽格瑞/動畫作品完美,如果結果返回失敗(不正確的登錄憑據),但如果用戶登錄在正確的情況下,動畫會出現毛病並且有些偏移。有任何想法嗎?這是執行segue的同一行代碼,所以我對於它的可能性一無所知。

編輯:嘗試執行所建議的主線程上SEGUE - 沒有運氣

Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON, headers: nil).validate().responseJSON { (response) in 

     if response.result.isSuccess { 
      let result = response.result.value 
      print(result) 
      let token = response.response?.allHeaderFields["Access-Token"] as! String 
      print(token) 

      dispatch_async(dispatch_get_main_queue()) { 
       //PerformSegue here ... 
       self.performSegueWithIdentifier("toFirstOnboardingFromLogin", sender: nil) 

      } 
     } 
     else{ 
      self.emailTextField.layer.borderColor = UIColor.redColor().colorWithAlphaComponent(0.9).CGColor 
      self.passwordTextField.layer.borderColor = UIColor.redColor().colorWithAlphaComponent(0.9).CGColor 
      self.emailTextField.layer.borderWidth = 1.0 
      self.passwordTextField.layer.borderWidth = 1.0 
      self.passwordTextField.shake() 
      self.emailTextField.shake() 
      self.performSegueWithIdentifier("toFirstOnboardingFromLogin", sender: nil) 
     } 
    } 

編輯:

我使用dispatch_sync沒有運氣

+0

刪除打印語句,然後嘗試。 – Himanshu

+0

嘗試過它並沒有什麼區別 – air6199

回答

0

原來這個問題與Alamofire或主線程被阻止無關!我有一個早期的函數,它有一個條件內的UIView.commitAnimations(),但它有條件之外的.beginAnimations。所以動畫將始終開始,但永遠不會被提交,因此動畫的chop iness。

通過將提交動畫置於條件之外,可以輕鬆解決問題!

0

我覺得也試過阻塞你的線程;嘗試在主線程上執行seque。

Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON, headers: nil).validate().responseJSON { (response) in 
     dispatch_async(dispatch_get_main_queue()) { 
       //PerformSegue here ... 
      } 
    } 
+0

不能工作 – air6199