хорошо, так что этот вопрос похож на this один, но я последовал за ответом на этот вопрос, но я не работал, так что дело в том, что у меня есть текстовое поле в моем просматривать и я хочу, чтобы переместить его вверх, когда клавиатура появляется это мой код:Анимация не является гладкой при первом запуске (когда появляется клавиатура)
Уведомления наблюдатель состояния клавиатуры
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' сек ответа положить его там будет решить эту проблему, но до сих пор при первом запуске (когда клавиатура появляется в первый раз) моя анимация не является гладкой
Этот код находится в подклассе 'UIViewController'? Попробуйте вызвать 'self.view.layoutIfNeeded' вместо того, чтобы называть его' nextButton' и 'emailTextField'. – Connor
@ConnorNeville, спасибо за ответного человека, да, они находятся внутри класса «UIViewController», и я устал, ваше предложение все еще не изменилось. –
Хмм. Попробуйте добавить еще один наблюдатель NSNotificationCenter' для 'keyboardDidShow' и разместите свою анимацию там. – Connor