Лучший способ обработки приостановленного приложения, когда у него есть сеанс, который должен истечь - PullRequest
0 голосов
/ 26 ноября 2010

У меня есть приложение, которое включает в себя сеанс входа в систему. Когда приложение приостанавливается (iOS 4), я сохраняю текущее время, и если в следующий раз приложение становится активным в течение 15 минут с момента приостановки, я хочу, чтобы оно возобновилось. В противном случае я хочу, чтобы он вернулся на экран входа в систему, поскольку сеанс истек.

Вот что я делаю, напишите сейчас, чтобы реализовать это:

В applicationDidBecomeActive делегата приложения я проверяю время и при необходимости представляю экран входа в систему (модально). Однако проблема в том, что если приложение показывало UIAlertView или UIActionSheet при приостановке, оно не будет автоматически отклонять его, когда я представляю экран входа в систему. UIAlertView или UIActionSheet появятся на экране входа в систему, к которому он вообще не принадлежит. Я знаю, что могу зарегистрировать каждый UIAlertView и UIActionSheet для прослушивания applicationDidBecomeActive и отклонить его при необходимости, но, поскольку у меня их много во всем приложении, очень удобно, если я могу избежать этого.

Мне было интересно, есть ли способ отклонить все активные виды, который останется на экране, даже если другой контроллер представления представлен модально.

Или есть ли лучший способ справиться с тайм-аутом сессии в iOS 4?

1 Ответ

1 голос
/ 28 ноября 2010

Я нашел способ сделать это без уведомлений (хотя уведомления не так сложны, как кажется): я добавил iVar (s) в каждый класс, показывающий UIAlertView для хранения отображаемого в данный момент AlertView.В определении AlertView:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle: ....
[alert show];
self.alertView = alert;
[alert release];

И очистите iVar при отклонении AlertView:

- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)index {
    // code goes here
    self.alertView = nil;
}

Затем в - (void) viewWillDisappear:(BOOL)animated или - (void)dealloc (в зависимости от ситуации) я добавил:

    [self.alertView dismissWithClickedButtonIndex:0 animated:YES];

То же самое можно сделать для UIActionSheet.Надеюсь, это поможет.

Пожалуйста, дайте мне знать, если у вас есть лучшее решение.

...