当iPad处于睡眠模式时,NSRunLoop用于显示UIAlertView

时间:2014-02-19 11:19:54

标签: ios objective-c cocoa-touch nstimer

我有一个奇怪的情况,在一个按钮点击事件我添加计时器NSRunLoop应该在'x'分钟后触发。但是如果iPad在'x'分钟之前进入睡眠状态并且该计时器值达到其'x'值,那么在此之后我再次打开我的应用程序它不会显示警报。

因此,如果计时器时间到了并且iPad处于睡眠模式,它应该在我再次启动应用程序后显示警告。以下是我的代码。

 NSTimer *uiTimer = [NSTimer timerWithTimeInterval:[x intValue] * 60 target:self selector:@selector(fireTheMethod:) userInfo:nil repeats:NO];
 [[NSRunLoop mainRunLoop] addTimer:uiTimer forMode:NSRunLoopCommonModes];

-(void) fireTheMethod
{
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
  [alert show];
}

1 个答案:

答案 0 :(得分:0)

也许你可以稍微改变一下你的逻辑?在您的应用applicationDidEnterBackground:中,您可以使计时器无效,并保存当前时间。然后在applicationWillEnterForeground:中,您可以获得当前时间,如果时差大于所需的时间间隔,则显示警报。