viewWillDisappear:
iOSがアプリを切り替えるときに呼び出されるかどうか疑問に思っていviewDidDisappear:
ました(たとえば、ユーザーがホームボタンを押した場合)。これにより、ビューが画面から消えますが、コールバックは呼び出されますか?
質問する
12722 次
2 に答える
25
あなたはできる。
私が以前に使用した解決策は、アプリのデリゲートでapplicationDidEnterBackground:
andを使用することです。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];
}
これで、アプリがバックグラウンドに移動してフォアグラウンドに戻ったときに、View Controller 階層のviewWillDisappear:
、viewDidDisappear:
、viewWillAppear:
およびメソッドが呼び出されます。viewDidAppear:
これが機能することを願っていますか?
編集 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()
}
2017 年 2 月 1 日編集 (すべてのウィンドウ)
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()
}
}
于 2015-08-27T11:59:16.560 に答える
20
いいえ、その場合、これらのメソッドは呼び出されません。
アプリがバックグラウンドになったときに通知を受け取るには、UIApplicationWillResignActiveNotification 通知に登録できます。
余談ですが、この種のことを見つける最も簡単な方法は、非常にシンプルなアプリをすばやく構築してブレークポイントを設定することです。
于 2013-09-10T21:00:54.997 に答える