Мне было интересно, если viewWillDisappear:
и viewDidDisappear:
вызывать, когда iOS переключает приложения (например, кнопка «Домой» нажимается пользователем). Это приведет к тому, что вид исчезнет с экрана, но вызовы вызываются для этого?Do viewWillDisappear/viewDidDisappear вызывается при переключении приложений?
ответ
Нет, эти методы не будут вызываться в этом случае.
Чтобы получать уведомление, когда приложение переходит в фоновый режим, вы можете зарегистрироваться для уведомления UIApplicationWillResignActiveNotification.
Как в стороне, самый простой способ узнать это - просто быстро создать супер простое приложение и установить точки останова.
Вы можете.
Решение, которое я использовал ранее, заключается в использовании applicationDidEnterBackground:
и applicationWillEnterForeground:
в вашем делете приложения.
Сделайте это в своем делете приложения.
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.window.rootViewController beginAppearanceTransition:NO animated:NO];
[self.window.rootViewController endAppearanceTransition];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.window.rootViewController beginAppearanceTransition:YES animated:NO];
[self.window.rootViewController endAppearanceTransition];
}
Теперь ваши viewWillDisappear:
, viewDidDisappear:
, viewWillAppear:
и viewDidAppear:
методы вашего зрения иерархии контроллера будет вызвана, когда вы приложение идет на фоне и обратно на передний план.
Надеюсь, это сработает?
Edit 24/11/16 (Swift 3 версия)
func applicationDidEnterBackground(_ application: UIApplication) {
window?.rootViewController?.beginAppearanceTransition(false, animated: false)
window?.rootViewController?.endAppearanceTransition()
}
func applicationWillEnterForeground(_ application: UIApplication) {
window?.rootViewController?.beginAppearanceTransition(true, animated: false)
window?.rootViewController?.endAppearanceTransition()
}
Редактировать 2/1/2017 (все окна)
func applicationDidEnterBackground(_ application: UIApplication) {
for window in application.windows {
window.rootViewController?.beginAppearanceTransition(false, animated: false)
window.rootViewController?.endAppearanceTransition()
}
}
func applicationWillEnterForeground(_ application: UIApplication) {
for window in application.windows {
window.rootViewController?.beginAppearanceTransition(true, animated: false)
window.rootViewController?.endAppearanceTransition()
}
}
Кажется удивительно просто. Но есть ли какие-либо (противные) побочные эффекты для этого? –
Если вы не делаете что-то сумасшедшее, как сдавать инициализирующий код в любом 'viewWillAppear:' или аналогичном коде деструктора в 'viewWillDisappear:', я не вижу, чтобы это вызывало какие-либо проблемы. До сих пор я этого не видел. – Trenskow
Я добавил код, чтобы показать, как запускать вызовы во всех окнах приложений. Это должен быть единственный недостаток первого - он работает только в главном окне. – Trenskow
- 1. Приложение сбой при переключении приложений
- 2. Layer удалена при переключении у приложений
- 3. Почему acceptsFirstResponder вызывается дважды при переключении просмотров?
- 4. jQuery не вызывается при переключении с ajax
- 5. didSelectViewController не вызывается при переключении вкладок вручную
- 6. UITableView separator мерцает при переключении приложений
- 7. JavaFX скомпилировал проблемы приложений при переключении просмотров
- 8. Избегайте приложения после закрытия при переключении приложений
- 9. - (void) keyboardWasShown не вызывается при переключении на другой UITextField
- 10. Активность onResume(), который вызывается при смене приложений
- 11. Как изменить цвет этой панели при переключении приложений?
- 12. Возможно ли изменить активность, отображаемую при переключении приложений на Android?
- 13. localhost: 3000 не меняется при переключении приложений node.js
- 14. Получение исключения NoSuchField при переключении приложений с использованием намерений
- 15. @ font-face для разгрузки шрифтов при переключении приложений/вкладок
- 16. Как получить уведомление при переключении приложений на переднем плане
- 17. Ошибка приложений при переключении с экрана всплеска на MainActivity
- 18. анимация: переход при переключении
- 19. Заявление о переключении кэшей приложений ColdFusion
- 20. NotImplementedError при переключении на Полтергейст
- 21. java.lang.ClassCastException при переключении фрагментов
- 22. Скрыть кнопку при переключении
- 23. Предупреждение при переключении переключателя
- 24. Странное поведение при переключении
- 25. Ошибка при переключении активности
- 26. StringIndexOutOfBoundsException при переключении страницы
- 27. Сбой при переключении изображений
- 28. сюрприз при переключении ветвей
- 29. EXC_BAD_ACCESS при переключении CCAnimations
- 30. keyboardWillShow вызывается для клавиатур других приложений
И каковы результаты ваше тестирование? –
Я уверен, что есть люди, которые задавались этим вопросом. Googling все еще быстрее, чем кодирование тестового проекта. – gabor
делегаты приложений вызываются только во время переключения приложений. –