iOS отображает UIAlertView со временем работы

Я хочу выйти из своего приложения через некоторое время без активности пользователя. Я нашел пример, как это сделать. Когда таймер бездействия истекает, я хочу отобразить всплывающее окно с надписью «Выход из системы через XX секунд», где секунды будут обновляться - это заканчивается: 60, 59, 58 ... и затем они достигают 0. Я выхожу из системы пользователя (во всплывающем окне также будет кнопка «Отменить выход», которую, я думаю, легко реализовать). Я пытаюсь выяснить, есть ли простой способ создания такого всплывающего окна. -up - мне кажется довольно распространенная идея, но я пока ничего не нашел.


person PeterD    schedule 13.03.2013    source источник


Ответы (2)


Добавьте два свойства в ваш приватный интерфейс:

@interface MyViewController ()
@property(nonatomic, strong) UIAlertView *logoutAlertView;
@property(nonatomic) NSUInteger logoutTimeRemaining;
@end

Теперь, когда вы показываете свое предупреждение, сделайте это следующим образом:

self.logoutAlertView = [[UIAlertView alloc] initWithTitle:@"Title"
                                                  message:@"Logging out in 60 seconds"
                                                 delegate:self
                                        cancelButtonTitle:@"Dismiss"
                                        otherButtonTitles:nil];
[self.logoutAlertView show];

self.logoutTimeRemaining = 60;

[NSTimer scheduledTimerWithTimeInterval:1
                                 target:self
                               selector:@selector(updateAlert:)
                               userInfo:nil
                                repeats:YES];

Ваш метод updateAlert: будет выглядеть так:

- (void)updateAlert:(NSTimer *)timer {
    self.logoutTimeRemaining--;
    self.logoutAlertView.message = [NSString stringWithFormat:@"Logging out in %d seconds", self.logoutTimeRemaining];

    if (self.logoutTimeRemaining == 0) {
        // actually log out
        [timer invalidate];
    }
}
person Scott Berrevoets    schedule 13.03.2013

В этом случае рекомендуется реализовать пользовательский UIAlertView и добавить к нему UILabel с изменением значения таймера.

следуйте моему ответу в этой потоке, просто добавьте UILabel вместо UIButton для вашего случая.

person nsgulliver    schedule 13.03.2013
comment
Спасибо, у вас есть примеры, на которые вы могли бы мне сослаться? - person PeterD; 13.03.2013
comment
Я разместил ссылку на другую тему, на которую я недавно ответил, вы можете следить за ней, это не сложно реализовать то, что вы ищете. просто следуйте за нитью, и вы начнете. - person nsgulliver; 13.03.2013
comment
Спасибо, попробую и сообщу! - person PeterD; 13.03.2013
comment
Я использовал решение Скотта, которое точно соответствовало моим потребностям. Спасибо и за ваше - person PeterD; 14.03.2013
comment
нет проблем, да, решение Скотта должно быть быстрым и эффективным - person nsgulliver; 14.03.2013