Допустим, у меня есть несколько контроллеров представления, у каждого из которых есть несколько textviews / textfields / webviews. Есть один основной контроллер вида (MainViewController), а остальные отображаются с помощью presentModalViewController:animated:
.
РЕДАКТИРОВАТЬ : Я хочу уточнить, что я не использую UINavigationController - контроллер основного вида является просто обычным UIViewController, а другие время от времени отображаются как контроллеры модального представления.
Интересно, как мне реализовать подписку на уведомления клавиатуры, чтобы можно было правильно изменить размер подпредставлений в самом верхнем контроллере представления. Я пробовал 2 подхода:
1 / Подписаться на UIKeyboardWill (Показать | Скрыть) Уведомление в viewDidLoad
и отписаться в dealloc
.
Проблема: несколько контроллеров представления получают уведомление одновременно, что приводит к странному изменению размера макета.
2 / Подписаться на viewWillAppear
, подписаться на viewDidDisappear
Проблема: иногда viewWillAppear
не срабатывает, поэтому я вынужден вручную повторно подписаться на уведомления клавиатуры.
Любые советы приветствуются.