Анимация UIView Up с клавиатурой

У меня есть требование добавить функции чата в предстоящий проект.

Тем временем я пытался реализовать то, что, как я ожидал, было простым вопросом: иметь UIView в нижней части экрана, внутри которого есть UITextView, который будет анимировать клавиатуру, когда пользователь нажимает на UITextView.

У меня есть работа, но, к сожалению, анимация для клавиатуры немного отстает от вида над ней. Вот моя реализация:

Зарегистрируйте уведомления о клавиатуре:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 

Метод уведомления клавиатуры:

 - (void)keyboardWillShow:(NSNotification*)notification { CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; NSInteger curve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; [UIView animateWithDuration:duration delay:0 options:curve animations:^{ CGRect keyboardFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; _chatViewBottomConstraint.constant = keyboardFrame.size.height; [self.view layoutIfNeeded]; } completion:nil]; } 

Кто-нибудь еще сделал подобное, и может предоставить мне лучшее решение?

2 Solutions collect form web for “Анимация UIView Up с клавиатурой”

Это работает на меня:

 - (void)keyboardWillShow:(id)keyboardDidShow { [UIView beginAnimations:nil context:NULL]; NSDictionary *userInfo = [keyboardDidShow userInfo]; [UIView setAnimationDuration:[userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]]; [UIView setAnimationCurve:[userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]]; [self.view layoutIfNeeded]; [UIView commitAnimations]; } - (void)keyboardWillHide:(id)keyboardDidHide { [UIView beginAnimations:nil context:NULL]; NSDictionary *userInfo = [keyboardDidHide userInfo]; [UIView setAnimationDuration:[userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]]; [UIView setAnimationCurve:[userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]]; [self.view layoutIfNeeded]; [UIView commitAnimations]; } 

UPDATE: Или вы можете сделать то же самое с блоками:

 - (void)keyboardWillShow:(id)keyboardDidShow { NSDictionary *userInfo = [keyboardDidShow userInfo]; [UIView animateWithDuration:[userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] delay:0.f options:[[keyboardDidShow userInfo][UIKeyboardAnimationCurveUserInfoKey] intValue] << 16 animations:^{ ... } completion:^(BOOL finished) { ... }]; } - (void)keyboardWillHide:(id)keyboardDidHide { NSDictionary *userInfo = [keyboardDidHide userInfo]; [UIView animateWithDuration:[userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] delay:0.f options:[[keyboardDidHide userInfo][UIKeyboardAnimationCurveUserInfoKey] intValue] << 16 animations:^{ ... } completion:^(BOOL finished) { ... }]; } 

В словарях пользовательской информации уведомления есть как продолжительность анимации ( UIKeyboardAnimationDurationUserInfoKey ), так и кривая ( UIKeyboardAnimationCurveUserInfoKey ); если вы используете их оба , ваша анимация должна соответствовать времени анимации клавиатуры.

  • Выход из входного списка AccessViewView после закрытия клавиатуры
  • Высота автокоррекции клавиатуры (с / без автокоррекции)
  • iOS: Как получить доступ к `UIKeyboard`?
  • Задержка iOS7 в применении UIKeyboardAppearanceDark
  • изменить раскладку клавиатуры на emoji
  • UIScrollView: клавиатура убирается в интерактивном режиме
  • Подняв клавиатуру iPhone, нажав кнопку?
  • Можно показать клавиатуру без использования UITextField и UITextView iphone app?
  • UITextField и уведомления о клавиатуре - странный порядок
  • Custome клавиатурное шоу всплывающее изображение отключено
  • Раскладка клавиатуры Emoji неправильно рисуется и отсутствует много эмоций
  • Interesting Posts

    Как добавить дату UIDatePicker в UITextField?

    Есть ли альтернатива ios-ntp для получения атомного / текущего времени ios?

    Я не могу решить «неверный регистратор, зарегистрированный для идентификатора (BNRItemCell)»

    EXC_BAD_ACCESS (SIGSEGV) в WebCore :: UserGestureIndicator :: processingUserGesture

    Как сохранить и перезагрузить изображение с помощью ALAsset?

    Установите фоновое изображение и изображение значка в iPhone 6 и 6 плюс

    Могу ли я отображать текущее название воспроизводимой песни в UILabel из потока PLS?

    Как проверить, установлено ли расширение

    UISwtich запускает другое событие UISwitch в UITableView

    Как сделать вертикальный текст UILabel и UITextView для iOS в Swift?

    Диалоговое окно «Разрешение служб местоположения» приводит к отключению приложения?

    Изменить подпись времени в MusicSequence

    Общение между iPhone и Mac

    Ошибка приложения в iPad-симуляторе без полезной информации о консоли

    SpriteKit Генерирует случайную линию скручивания

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.