Анимация 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 ); если вы используете их оба , ваша анимация должна соответствовать времени анимации клавиатуры.

  • Закройте iOS Keyboard, прикоснувшись в любом месте, используя Swift
  • Как сделать ключ возврата на iPhone, чтобы клавиатура исчезла?
  • Создайте собственную пользовательскую клавиатуру со своими собственными изображениями / смайликами
  • Предотвращение отклонения клавиатуры при нажатии контроллера просмотра
  • Как обнаружить пользователя - это ввод в середине с помощью метода ввода?
  • Клавиатура iOS 8 скрывает мое текстовое изображение
  • iOS 8 - Удалить предыдущий / следующий / Готово Панель инструментов UIKeyboard внутри UIWebView (работает iOS 7, а не iOS 8)
  • Как отменить клавиатуру при касании всего приложения
  • UIKeyboardTypeDecimalPad с отрицательными номерами
  • UIButton близко к клавиатуре не получает сенсорное событие
  • Переключение UIKeyboardTypeNamePhonePad Просмотр по умолчанию
  • Interesting Posts

    Внедрить клавиатуру Key Pop Animation в iOS 8 Расширение клавиатуры

    Управление несколькими добавлениями с помощью ReactiveX (на iOS с Swift и Alamofire)

    Делегат ABPeoplePicker возвращает неверный идентификатор, когда номера телефонов Exchange и iCloud находятся в одной записи

    UITextField secureTextEntry пули с пользовательским шрифтом?

    Динамически создавать объекты Core Data во время выполнения

    Как найти непреднамеренные сравнения указателей на объекты?

    Стратегии отладки для чрезмерного удержания в ARC?

    Ошибки и переполнения точности GLSL ES

    Чрезвычайно запутывает автоматические проблемы восстановления Facebook в Facebook

    Повтор SKAction.moveToX с изменением стоимости

    Xcode: скрывать / защищать файлы ресурсов в конечном приложении iOS?

    Как обнаружить, что пользователь нажал кнопку «Не разрешать доступ к камере»

    Добавить git commit SHA в приложение iOS

    Столкновение имени метода OCMock

    Как обнаружить прикосновение к NSTextAttachment

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