几天前我开始学习swift,我对UI有很大的问题。 我有一个函数将数据发送到url,我想在数据到达时更新UI。 我尝试使用dispatch async执行此操作,但是当我点击文本字段并打开键盘时,UI将重置为默认UI,如在起始点(在这种情况下,btn返回默认y)。
func loginConnect()
{
self.loginLoader.startAnimating();
self.loginLoader.hidden = false;
UIView.animateWithDuration(1, animations: {
self.Loginbox.alpha = 0;
self.loginBtn.alpha = 0;
})
var url1:NSURL = NSURL(string: "http://www.justaurl.com/login.php")!;
println(url1);
let request = NSMutableURLRequest(URL: url1);
request.HTTPMethod = "POST";
let postString = "user=username&pass=password";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
//println("response = \(response)")
var error: NSError?
var responseString:NSString = NSString(data: data!, encoding: NSUTF8StringEncoding)!;
let data = responseString.dataUsingEncoding(NSUTF8StringEncoding);
let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSDictionary;
println(jsonData["0"] as String);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// Show the alert
self.loginLoader.hidden = true;
self.loginLoader.stopAnimating();
UIView.animateWithDuration(1, animations: {
self.Loginbox.alpha = 1;
self.loginBtn.alpha = 1;
}, completion:
{
completion in if 1 == 1
{
if((jsonData["0"] as String) == "error")
{
UIView.animateWithDuration(1, animations: {
self.loginBtn.frame.origin.y = CGFloat(self.loginBtnDefaultY) + 15;
});
}
}
var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("errorTxtAnimation"), userInfo: nil, repeats: false);
})
})
}
}
task.resume();
}