Question

After I hit a pause button, I want a label to appear until the user taps on the screen. How do I do this?

So far I have this

- (IBAction)ButtonPausePressed:(id)sender {

 PauseLabel.hidden = false (//how do i make it only visible until user taps?//)

if (GameEnd != true){
    if ([GameUpdate isValid]){
        [GameUpdate invalidate];
        [BirdUpdate invalidate];
    }else{
        BirdUpdate = [NSTimer scheduledTimerWithTimeInterval:0.015
                                                      target:self
                                                    selector:@selector(UpdateBird)
                                                    userInfo:nil
                                                     repeats:YES];
        GameUpdate = [NSTimer scheduledTimerWithTimeInterval:0.025
                                                      target:self
                                                    selector:@selector(GameUpdate)
                                                    userInfo:nil
                                                     repeats:YES];
    }
}
}
Était-ce utile?

La solution

- (IBAction)ButtonPausePressed:(id)sender { 
   PauseLabel.hidden = false
   [self performSelector:@selector(hiddenLabel) withObject:nil afterDelay:3];
   ...
}

- (void)hiddenLabel{
    PauseLabel.hidden = YES;
}

Autres conseils

Try following

[your_view addSubview:your_label];
your_label.hidden = YES;
[your_label performSelector:@selector(setHidden:) withObject:@NO afterDelay:3];

Try like this:

-(void)viewDidLoad
{
        UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(btnSingleClicked:)];

        [singleTapGesture setDelegate:self];
         singleTapGesture.numberOfTapsRequired = 1;
        [self.view addGestureRecognizer:singleTapGesture];
}

-(void)btnSingleClicked:(UITapGestureRecognizer *)recognizer
{
    if(recognizer.state == UIGestureRecognizerStateEnded && !self.PauseLabel.hidden)
    {
         [[UIApplication sharedApplication] beginIgnoringInteractionEvents];
         [UIView animateWithDuration:3.0f       // 3 sec to hide it
                          delay:0.0f
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         [self.PauseLabel setAlpha:0.0f];
                                 }
                     completion:^(BOOL finished)
                               {
                                   // remove from super view if needed.
                                   // Now you can handle touch events etc
                                   [[UIApplication sharedApplication] endIgnoringInteractionEvents];
                               }];
    }
}

The idea behind the line is add a single tap gesture on your viewcontroller's view and if the pause label is displayed and a touch is happend on view check its state is ended and hide label with animation.

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ PauseLabel.hidden = YES; });

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top