AppDelegate詳解+viewController中監聽Home鍵觸發以及重新進入界面的方法

AppDelegate詳解

1.AppDelegate.h

//模板默認引入程序需要使用“類”的框架,即UIKit.h頭文件,使它包含在程序中  

#import <UIKit/UIKit.h> 

 

//此處@class聲明程序中的“類”名稱爲MyViewController  

@class MyViewController;  

 

//此處@interface聲明程序界面的名稱爲MyAppDelegate,其中NSObject表示它的“類”符合UIApplicationDelegate協議,接着UIApplicationDelegate,此方法爲應用程序提供了關於觸發的關鍵事件信息,例如什麼時候程序運行完成,什麼時候內存不足,什麼時候重要變化發生  

@interface MyAppDelegate : NSObject <UIApplicationDelegate> {  

      

    //定義一個程序顯示窗口的對象  

    UIWindow *window;  

      

    //加入視圖控制實際變量的對象  

    MyViewController *viewController;  

}  

 

//此處@Property聲明程序的屬性,並且加入在前面@interface中指定的相同對象, 其中nonatomic是使用單線程機制減少系統資源使用,並將更改方法和修改方法生成在

//Property(屬性),  

//接着retain,Property的可選項,表明向Property

(屬性)的對象發送一個retain(保留消息),  

//而IBOutlet表示對象在Interface Builder(Storyboard)中創建。   

 

//例如下面的代碼在應用程序中顯示了一個窗口控件,

把這個控件連接到nib文件並顯示在Interface Builder (Storyboard) 

@property (nonatomic, retain) IBOutlet UIWindow *window;  

 

//又例如,代碼在應用程序中顯示了一個視圖控制控件,

把這個控件連接到nib文件並顯示在 Interface Builder (Storyboard)

@property (nonatomic, retain) IBOutlet MyViewController *viewController;  

 

//程序結束點,表明結束MyViewController.h文件  

@end  

2.AppDelegate.m

 

協議中定義的這些需要實現的方法的作用:

1、-  (void)applicationWillResignActive:(UIApplication *)application

說明:當應用程序將要入非活動狀態執行,在此期間,應用程序不接收消息或事件,比如來電話了

2、-  (void)applicationDidBecomeActive:(UIApplication *)application

說明:當應用程序入活動狀態執行,這個剛好跟上面那個方法相反

3、- (void)applicationDidEnterBackground:(UIApplication  *)application

說明:當程序被推送到後臺的時候調用。所以要設置後臺繼續運行,則在這個函數裏面設置即可

4、-  (void)applicationWillEnterForeground:(UIApplication *)application

說明:當程序從後臺將要重新回到前臺時候調用,這個剛好跟上面的那個方法相反。

5、-  (void)applicationWillTerminate:(UIApplication *)application

說明:當程序將要退出是被調用,通常是用來保存數據和一些退出前的清理工作。這個需要要設置UIApplicationExitsOnSuspend的鍵值。

6、-  (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

說明:iPhone設備只有有限的內存,如果爲應用程序分配了太多內存操作系統會終止應用程序的運行,在終止前會執行這個方法,通常可以在這裏進行內存清理工作防止程序被終止

7、- (void)applicationSignificantTimeChange:(UIApplication*)application

說明:當系統時間發生改變時執行

8、-  (void)applicationDidFinishLaunching:(UIApplication*)application

說明:當程序載入後執行

9、-  (void)application:(UIApplication)application  willChangeStatusBarFrame:(CGRect)newStatusBarFrame

說明:當StatusBar框將要變化時執行

10、-  (void)application:(UIApplication*)application willChangeStatusBarOrientation:

(UIInterfaceOrientation)newStatusBarOrientation

duration:(NSTimeInterval)duration

說明:當StatusBar框方向將要變化時執行

11、-  (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

說明:當通過url執行

12、-  (void)application:(UIApplication*)application  didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation

說明:當StatusBar框方向變化完成後執行

13、-  (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame

說明:當StatusBar框變化完成後執行


viewController中監聽Home鍵觸發以及重新進入界面的方法  

第一步:

創建2個NSNotificationCenter監聽
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification object:nil]; //監聽是否觸發home鍵掛起程序.
    
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification object:nil]; //監聽是否重新進入程序程序.


第二步:
實現2個NSNotificationCenter所觸發的事件方法
- (void)applicationWillResignActive:(NSNotification *)notification

{
    printf("按理說是觸發home按下\n");
}

- (void)applicationDidBecomeActive:(NSNotification *)notification
{
    printf("按理說是重新進來後響應\n");
}



注: 在home鍵觸發後,AppDelegate響應的方法爲:

- (void)applicationDidEnterBackground:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers,

and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. */ }

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章