[英]Why are the view*Disappear methods not being called in iOS?
單擊主頁按鈕和電源按鈕后,我嘗試做一些事情。 我正在用iOS開發。
這是我使用的代碼:
- (void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
NSLog(@"viewDidDisappear");
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"viewWillDisappear");
}
- (void)applicationFinishedRestoringState{
NSLog(@"applicationFinishedRestoringState");
}
當我單擊iPhone上的電源按鈕或主頁按鈕時,為什么不能調用上述功能?
我錯過了什么?
viewDidDisappear:
和viewWillDisappear:
如果視圖被按下或彈出,或者無論如何在您自己的運行循環中消失,都會被調用,通過按下home或電源按鈕進入背景並不算是與視圖相關的事件,而是與應用程序相關的事件。 您應該改為注冊UIApplicationWillResignActiveNotification
通知。
例如
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disappearSelector) name:UIApplicationWillResignActiveNotification object:nil];
根據蘋果的文件
在即將將接收者的視圖添加到視圖層次結構之前,並配置任何動畫以顯示視圖之前,將調用此方法。 您可以重寫此方法以執行與顯示視圖關聯的自定義任務。 例如,您可能使用此方法來更改狀態欄的方向或樣式,以與要顯示的視圖的方向或樣式相協調。 如果重寫此方法,則必須在實現中的某個時刻調用super。
要獲得通知,請在應用程序恢復時使用- (void)applicationDidBecomeActive:(UIApplication *)application
此方法在AppDelegate.m
實現
另一方面
用戶鎖定手機時,將發布名為UIApplicationDidEnterBackgroundNotification
的通知。 聆聽的方法如下:
在ViewController的viewDidLoad
中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenLocked) name:UIApplicationDidEnterBackgroundNotification object:nil];
然后在您的方法中添加一些內容
-(void)screenLocked{
//do stuff
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.