Как восстановить UIInputViewController self.view после отключения клавиатуры?

Я разрабатываю приложение с расширением клавиатуры. При некоторых случаях использования расширения клавиатуры (например, когда я использую кнопку переключения клавиатуры) расширение проходит через viewDidDisappear, и в этом случае я знаю, что я могу очистить клавиатуру, и она освобождается со всеми своими представлениями, и память освобождается. В других случаях (например, при использовании приложения «Заметки» и нажатии кнопки «Готово/Назад») расширение проходит через viewWillDisappear, но не через viewDidDisappear. случай, когда я не очищаю клавиатуру, поскольку она не достигает моих методов очистки и, следовательно, не освобождается.

В этот момент я ожидаю, что когда я вернусь к клавиатуре, вернувшись, например, к заметке, я получу предыдущий UIInputViewController с уже созданным представлением.

К сожалению, в этот момент метод isViewLoaded() возвращает false, и мой UIInputViewController снова проходит через метод loadView, поэтому заново строит все представления. опять же, в результате память приложения растет, пока в какой-то момент я не достигну неприятного обратного вызова метода didReceiveMemoryWarning.

Я хотел бы каким-то образом восстановить представление, которое я создал для своей клавиатуры в UIInputViewController, который был инициализирован первым. Кто-нибудь знает, возможно ли это и как этого можно достичь?

Я искал restorationIdentifier для выполнения этой задачи, поправьте меня, если я ошибаюсь, но он используется с обычным UIViewController и не может использоваться с >UIInputViewController, так как не мой AppDelegate отвечает за его запуск.

Обновлять

Из дальнейших исследований, которые я провел, я пришел к выводу, что независимо от того, какую операцию вы совершаете:

  1. Используйте кнопку «Готово/Назад» в приложении «Заметки».
  2. Переключитесь в приложение «Сообщения» и используйте там клавиатуру.
  3. Используйте кнопку «переключить клавиатуру»

В других сценариях класс UIInputViewController всегда проходит через метод инициализации.

Насколько я понимаю объектно-ориентированное программирование, это означает, что тот, кто вызывает мою клавиатуру для жнеца, делает это с помощью конструктора и в основном создает новый экземпляр клавиатуры. Это означает, что у меня никогда не будет доступного представления при первом появлении клавиатуры в любом из вариантов поведения, и мне всегда нужно создавать представление клавиатуры для нового экземпляра и очищать старое. Это правильно? или есть способ сохранить представление UIInputViewController?


person Emil Adz    schedule 21.04.2015    source источник


Ответы (1)


Если вы не используете собственное пользовательское приложение с клавиатурой для хранения предыдущего экземпляра, сделать это невозможно. Во всем, кроме пользовательского приложения, разработанного вами, это выходит за рамки ваших возможностей.

person Áron Géczy    schedule 13.05.2016