2013-04-03 51 views
0

正在關注this tutorial,我已將我的iPad應用程序設置爲在半小時後超時。applicationDidTimeout不一致

這個工程可以在模擬器或連接到Mac的iPad上通過Xcode完美運行。但是,如果我將iPad與Mac斷開連接並重新登錄到我的應用程序,則不再超時。

我希望有人能夠闡明爲什麼會發生這種情況。

AppDelegate.m

-(void)applicationDidTimeout:(NSNotification *) notif 
{ 
    NSLog (@"time exceeded!!"); 

    UIViewController *controller = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:NULL] instantiateViewControllerWithIdentifier:@"mainView"]; 

    [(UINavigationController *)self.window.rootViewController pushViewController:controller animated:YES]; 
} 

TIMERUIApplication.h

@interface TIMERUIApplication : UIApplication 
{ 
    NSTimer  *myidleTimer; 
} 

-(void)resetIdleTimer; 

TIMERUIApplication.m

-(void)sendEvent:(UIEvent *)event 
{ 
    [super sendEvent:event]; 

    if (!myidleTimer) 
    { 
     [self resetIdleTimer]; 
    } 

    NSSet *allTouches = [event allTouches]; 
    if ([allTouches count] > 0) 
    { 
     UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase; 
     if (phase == UITouchPhaseBegan) 
     { 
      [self resetIdleTimer]; 
     } 

    } 
} 
-(void)resetIdleTimer 
{ 
    if (myidleTimer) 
    { 
     [myidleTimer invalidate]; 
    } 
    int timeout = kApplicationTimeoutInMinutes * 60; 
    myidleTimer = [NSTimer scheduledTimerWithTimeInterval:timeout target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO]; 

} 

-(void)idleTimerExceeded 
{ 
    isLoggedIn = FALSE; 
    numberOfFIlesAlreadyDownloaded = 0; 
    numberOfFilesToBeDownloaded = 0; 
    [[NSNotificationCenter defaultCenter] postNotificationName:kApplicationDidTimeoutNotification object:nil]; 
} 

回答

0

一些嘗試進一步縮小下來一點到iPad自動鎖定。

當iPad進入睡眠狀態時,應用程序也會進入休眠狀態,這意味着計時器會中斷。

將iPad連接到Mac時禁用了自動鎖定,這就是爲什麼我只在斷開的iPad上注意到它的原因。