簡體   English   中英

為什么在iOS中沒有調用view * Disappear方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM