Как приостановить приложение, когда на экране появляется предупреждение? - PullRequest
0 голосов
/ 13 августа 2011

Я хочу приостановить экран, когда на экране отображается предупреждение, а затем отменить паузу, когда предупреждение отклонено. Как бы я это сделал? Вот мой контроллер просмотра:

- (void)viewDidLoad
{NSLog(@"viewDidLoad");
[super viewDidLoad];

[self generate];

[self.answer becomeFirstResponder];

UIAlertView *alert;
{alert = [[UIAlertView alloc]
          initWithTitle:@"Welcome to iCanMultiply!" 
          message:@"Tap 'Start' to start the game" 
          delegate: self
          cancelButtonTitle:@"Start" 
          otherButtonTitles: nil];
}

[alert show];
[alert release];

alertTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(showAlert) userInfo:nil repeats:YES];
}

-(void)showAlert {
    UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Game Over" 
                      message:@"You ran out of time" 
                      delegate:self 
                      cancelButtonTitle:@"Try Again" 
                      otherButtonTitles: nil];

[alert show];
[alert release];
}

- (IBAction)submit:(id)sender {
int num = [answer.text intValue];


UIAlertView *alert;
if (num == label.tag)
{
    NSUInteger messageCount = [messagesCorrect count];
    int randomMessageIndex = arc4random() % messageCount;

    alert = [[UIAlertView alloc] 
             initWithTitle:@"Correct!" 
             message:[messagesCorrect objectAtIndex:randomMessageIndex]
             delegate:self 
             cancelButtonTitle:@"Next Question" 
             otherButtonTitles: nil];

    alert.tag = 1;

} else 
{
    NSUInteger messageCount = [messagesIncorrect count];
    int randomMessageIndex = arc4random() % messageCount;

    alert = [[UIAlertView alloc] 
             initWithTitle:@"Wrong!" 
             message:[messagesIncorrect objectAtIndex:randomMessageIndex]
             delegate:self 
             cancelButtonTitle:@"Try Again" 
             otherButtonTitles: nil];
    }

    [alert show];
    [alert release];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 1)
    {
        [self generate];

        answer.text = @"";
    }
}

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {

    }

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

1 Ответ

0 голосов
/ 13 августа 2011

Извините, я не прочитал ваш код, но в целом вы останавливаете NSTimer.

Вы установили ивар (в своем .h):

NSTimer *theTimer;

Когда вы хотите его запустить:

if (!theTimer) {
    theTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(showAlert) userInfo:nil repeats:YES];
}

Когда вы хотите остановить это

if (theTimer) {
    [theTimer invalidate];
    theTimer = nil;
}
...