2015-08-25 29 views
0

我嘗試在主頁按鈕和電源按鈕被點擊時執行某些操作。我正在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上的電源按鈕或home鍵上面的功能沒有被調用?

我錯過了什麼嗎?

回答

1

viewDidDisappear:viewWillDisappear:將被調用,如果視圖被推入或彈出或無論如何將消失在您自己的runloop,通過按回家或電源按鈕進入後臺不算作視圖的相關事件,而是與應用程序相關事件。您應該註冊UIApplicationWillResignActiveNotification通知。

例如

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disappearSelector) name:UIApplicationWillResignActiveNotification object:nil]; 
1

根據蘋果的文檔

之前接收的觀點是關於要被添加到 視圖體系和被配置用於 之前任何動畫表示視圖。該方法被調用。您可以覆蓋此方法以執行與顯示視圖相關的自定義任務 。例如,您可以使用此方法將狀態欄的方向或樣式更改爲 與所呈現視圖的方向或樣式一致。 如果您重寫此方法,則必須在您的 實施中的某個時刻調用super。

得到通知,當您的應用程序恢復,你應該使用: - (void)applicationDidBecomeActive:(UIApplication *)application這種方法在你的AppDelegate.m

實現在另一方面

通知稱爲UIApplicationDidEnterBackgroundNotification張貼當用戶鎖定他們的電話。以下是如何聽吧:

viewDidLoad:你的ViewController的:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenLocked) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

然後在你的方法添加一些東西

-(void)screenLocked{ 
    //do stuff 
} 
+0

'UIApplicationDidEnterBackgroundNotification'將被調用時,OS決定應用程序應實際上是背景,如果用戶很快返回到應用程序,它可能根本不會被調用,另一方面,當應用程序辭職爲前端應用程序時,將調用「UIApplicationWillResignActiveNotification」,並且將始終在家或電源上調用按鈕按下。 –

相關問題