Отключить расширение клавиатуры iOS, когда приложение работает, оно свернуто
Я работаю над расширением клавиатуры iOS. Он работает нормально, но используемая им оперативная память почти удваивается, если я сверну любое текущее приложение и открою клавиатуру в другом приложении.
Чтобы объяснить это лучше, приведу пример.
Предположим, я открыл клавиатуру в приложении "Заметки", это занимает около 15 МБ (первый запуск). Теперь, если я сверну "Заметки" и открою клавиатуру в "Сафари", память уйдет на 21 МБ.
Итак, мой вопрос: есть ли способ отменить клавиатуру, если приложение, в котором она запущена, свернуто?
Любая помощь приветствуется. Спасибо
2 ответа
Вы можете подписаться на NSExtensionHostWillEnterBackground
/ NSExtensionHostWillResignActive
уведомления и сравнить объект контекста расширения с вашим UIInputViewController
Расширение объекта контекста, чтобы увидеть, что хост-приложение любого отдельного контроллера ввода ввода исчезает.
С учетом сказанного, звучит так, будто вы UIInputViewController
подкласс, или, по крайней мере, часть его содержимого.
Вы должны профилировать свое расширение клавиатуры для утечек / увеличения кучи и гарантировать, что любые ресурсы, которые требуются только одному экземпляру клавиатуры, освобождаются к тому времени, когда его представление ввода было скрыто.
В вашем AppDelegate.m:
- (void)applicationDidEnterBackground:(UIApplication *)application{
[self.window endEditing:YES];
}