首次运行时动画不流畅(键盘出现时)

时间:2016-08-18 16:00:39

标签: ios swift2 uianimation

好吧所以这个问题类似于this一个问题,但是我回答了这个问题,但是我没有工作,所以问题是我在视图中有一个Textfield,我想要移动键盘出现时这是我的代码:

键盘状态的通知观察者

  NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LaunchScreenViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)

获取键盘高度的功能

    func keyboardWillShow(notification:NSNotification) {
    let userInfo:NSDictionary = notification.userInfo!
    duration = (notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double)
    let keyboardFrame:NSValue = userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue
    let keyboardRectangle = keyboardFrame.CGRectValue()

    keyboardHeight = keyboardRectangle.height

}

我的动画

    func textFieldDidBeginEditing(textField: UITextField) {

    self.nextButtonConstraint.constant  = keyboardHeight
    UIView.animateWithDuration(duration) {
        self.nextButton.layoutIfNeeded()
        self.emailTextField.layoutIfNeeded()

    }

}

你可以看到我的动画在textFieldDidBeginEditing,因为根据类似question'的答案,将它放在那里可以解决问题,但在第一次运行时仍然(当键盘出现时第一次)我的动画不流畅

1 个答案:

答案 0 :(得分:0)

我认为解决方案可能非常简单。 试着把你所有的代码放在这里:

  DispatchQueue.main.async{
    // Your Code here
  }

这会将动画移动到主线程,这会加速它并避免动画不流畅。