好吧所以这个问题类似于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'的答案,将它放在那里可以解决问题,但在第一次运行时仍然(当键盘出现时第一次)我的动画不流畅
答案 0 :(得分:0)
我认为解决方案可能非常简单。 试着把你所有的代码放在这里:
DispatchQueue.main.async{
// Your Code here
}
这会将动画移动到主线程,这会加速它并避免动画不流畅。