iOS PresentViewController с клавиатурой

Я действительно борюсь с клавиатурой! У меня есть viewController, который я представляю так:

self.present(viewController, animated: true, completion: nil)

В этом viewController у меня есть текстовое поле, которое становится FirstResponder следующим образом:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.textField.becomeFirstResponder()
}

Дело в том, что при появлении вида клавиатура просто выскакивает. Это совсем не гладко. Я хотел бы сделать это точно так же, как в родном приложении iOS. Сообщение: когда вы нажимаете на создание сообщения (верхний правый угол). Он представляет новый viewController с клавиатурой, все анимированные.

Любая помощь будет принята с благодарностью.


person Alexis Darnat    schedule 26.04.2018    source источник
comment
Когда вы говорите, что клавиатура просто всплывает, вы имеете в виду, что она вообще не анимируется? Просто появляется?   -  person liquid    schedule 26.04.2018
comment
@slickdaddy да точно! никакой анимации, просто мерцание   -  person Alexis Darnat    schedule 26.04.2018


Ответы (2)


Попробуйте поместить becomeFirstResponder() внутрь viewDidLayoutSubviews().

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    textField.becomeFirstResponder()
}
person Hamer    schedule 26.04.2018
comment
Если это не работает, требуется дополнительная информация, помимо той, что представлена ​​в приведенном выше примере кода. Представление контроллера представления с текстовым полем из чистого проекта таким образом анимирует так, как вы ожидаете. Если вы тестируете через симулятор, попробуйте физическое устройство, у меня были проблемы с клавиатурой и симулятором в прошлом. - person Hamer; 26.04.2018
comment
вот код, в котором я вызываю метод presentViewController: @objc private func addButtonAction() { let vc = viewController() let navigationController = navigationController(rootViewController: vc) DispatchQueue.main.async { self.present(navigationController, animated: true, completion: nil) } } - person Alexis Darnat; 26.04.2018
comment
И я попытался скомпилировать его на своем телефоне, проблема все та же. - person Alexis Darnat; 26.04.2018

Переместите его для просмотраDidAppear

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.textField.becomeFirstResponder()
}
person Edward    schedule 06.04.2019