Отключить расширение клавиатуры iOS, когда приложение работает, оно свернуто

Я работаю над расширением клавиатуры iOS. Он работает нормально, но используемая им оперативная память почти удваивается, если я сверну любое текущее приложение и открою клавиатуру в другом приложении.

Чтобы объяснить это лучше, приведу пример.

Предположим, я открыл клавиатуру в приложении "Заметки", это занимает около 15 МБ (первый запуск). Теперь, если я сверну "Заметки" и открою клавиатуру в "Сафари", память уйдет на 21 МБ.

Итак, мой вопрос: есть ли способ отменить клавиатуру, если приложение, в котором она запущена, свернуто?

Любая помощь приветствуется. Спасибо

2 ответа

Вы можете подписаться на NSExtensionHostWillEnterBackground / NSExtensionHostWillResignActive уведомления и сравнить объект контекста расширения с вашим UIInputViewControllerРасширение объекта контекста, чтобы увидеть, что хост-приложение любого отдельного контроллера ввода ввода исчезает.

С учетом сказанного, звучит так, будто вы UIInputViewController подкласс, или, по крайней мере, часть его содержимого.

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

В вашем AppDelegate.m:

- (void)applicationDidEnterBackground:(UIApplication *)application{
   [self.window endEditing:YES];
}
Другие вопросы по тегам