AppDelegate详解+viewController中监听Home键触发以及重新进入界面的方法

来源:互联网 发布:淘宝不能申请退款 编辑:程序博客网 时间:2024/06/05 01:02

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. */}

0 0
原创粉丝点击