iPhone:检测用户自上一次屏幕触摸以来的不活动/空闲时间

iPhone:检测用户自上一次屏幕触摸以来的不活动/空闲时间

是否有人实现了一个功能,如果用户在某一段时间内没有触摸屏幕,您就会采取特定的操作吗?我想找出最好的办法。

UIApplication中有一个与此相关的方法:

[UIApplication sharedApplication].idleTimerDisabled;

如果你有这样的东西,那就太好了:

NSTimeInterval timeElapsed = [UIApplication sharedApplication].idleTimeElapsed;

然后,我可以设置一个计时器,并定期检查这个值,并在它超过阈值时采取一些操作。

希望这能解释我要找的东西。有没有人已经处理过这个问题,或者对你会怎么做有任何想法?谢谢。


心有法竹
浏览 651回答 3
3回答

互换的青春

以下是我一直在寻找的答案:让您的应用程序委托子类UIApplication。在实现文件中,重写sendEvent:方法,如下所示:- (void)sendEvent:(UIEvent *)event {     [super sendEvent:event];     // Only want to reset the timer on a Began touch or an Ended touch, to reduce the number of timer resets.     NSSet *allTouches = [event allTouches];     if ([allTouches count] > 0) {         // allTouches count only ever seems to be 1, so anyObject works here.         UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase;         if (phase == UITouchPhaseBegan || phase == UITouchPhaseEnded)             [self resetIdleTimer];     }}- (void)resetIdleTimer {     if (idleTimer) {         [idleTimer invalidate];         [idleTimer release];     }     idleTimer = [[NSTimer scheduledTimerWithTimeInterval:maxIdleTime target:self selector:@selector(idleTimerExceeded) userInfo:     nil repeats:NO] retain];}- (void)idleTimerExceeded {     NSLog(@"idle time exceeded");}其中maxIdleTime和idleTimer是实例变量。为了使其工作,还需要修改main.m以告诉UIApplicationMain使用您的委托类(在本例中是AppDelegate)作为主体类:int retVal = UIApplicationMain(argc, argv, @"AppDelegate", @"AppDelegate");
打开App,查看更多内容
随时随地看视频慕课网APP