Swift - 键盘打开时重置UI

时间:2015-03-14 15:21:22

标签: ios user-interface swift keyboard dispatch-async

几天前我开始学习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();
    }

0 个答案:

没有答案