我认为你可以通过UIApplication自定义子类捕获事件.您可以在那里重新启动空闲计时器而不会破坏所有代码.这是怎么做的:
创建自己的UIApplication子类:
@interface MyUIApplication : UIApplication {
NSTimer *idleTimer;
}
@property(nonatomic,retain) NSTimer *idleTimer;
Run Code Online (Sandbox Code Playgroud)
在你的主()
int retVal = UIApplicationMain(argc, argv, @"MyUIApplication", nil);
Run Code Online (Sandbox Code Playgroud)
在您的应用程序subclass.m中,重写sendEvent:和sendAction:.见苹果文档在这里:
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
[self. idleTimer invalidate];
self. idleTimer = [NSTimer scheduledTimerWithTimeInterval:kIDLE_TIME target:self selector:@selector(logout:) userInfo:nil repeats:NO];}
Run Code Online (Sandbox Code Playgroud)
......发送动作相同.您也可以将退出逻辑放在此类中:
- (void)logout:(NSTimer *)timer {
// do logout
}
Run Code Online (Sandbox Code Playgroud)
当应用程序辞职时,您仍应在应用程序委托中注销(并使计时器无效):
- (void)applicationWillResignActive:(UIApplication *)application {
[application logout:nil];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |