Привязка клавиатуры, например приложения iMessage, при определении пользовательского аниматора перехода в UINavigationController - PullRequest
0 голосов
/ 18 ноября 2018

Я создал пользовательский переход push / pop в Navigation Controller. Все хорошо, за исключением одного небольшого факта: когда я провожу пальцем назад, клавиатура не привязывается к контроллеру всплывающего представления.

Вот несколько фотографий, демонстрирующих, что происходит и чего я хочу.

enter image description here

Это происходит только в случае замены стандартного аниматора методом UInavigationControllerDelegate.

public func navigationController(
    _ navigationController: UINavigationController,
    animationControllerFor operation: UINavigationController.Operation,
    from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {

    return TransparentAnimator(operation: operation)
}

1 Ответ

0 голосов
/ 19 ноября 2018

Переход параллакса по умолчанию в UINavigationController использует приватные методы (которые скрыты и могут использоваться только Apple) для перемещения клавиатуры следующим образом.

Некоторые приложения все еще делают это, например, Messenger Facebook. Немного поиграв с их переходом, я на 99% уверен, что они делают снимок клавиатуры для своего перехода. Если клавиатура что-то анимирует, анимация будет приостановлена ​​(потому что это снимок). Кроме того, поскольку они отклоняют клавиатуру для достижения этого эффекта, клавиатура будет сброшена при отмене анимации (поэтому, если вы находитесь в режиме смайликов, она вернется к буквам).

Вы можете посмотреть, как сделать снимок клавиатуры здесь: Снимок экрана iPhone, включая клавиатуру

...