2016-08-24 33 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