简体   繁体   English

第一次运行计时器,第二次恢复计时器

[英]Run Timer for first time and resume timer for second time

Declared variable in m file. 在m文件中声明的变量。

BOOL isFirstTime;

I want that if play button is pressed the very first time then it should toggle to pause button and check the function isFirstTime then it should start the timer and execute the displayviewsAction method and if the pause button is resumed to play back then it should check again the function isFirstTime or second time and if the hit is for the second time then it should resume timer. 我希望如果第一次按下播放按钮,则应切换到暂停按钮并检查函数isFirstTime然后应启动计时器并执行displayviewsAction方法,如果继续播放暂停按钮,则应再次检查该函数是isFirstTime或第二次,如果点击是第二次,则应恢复计时器。

-(void)playpauseAction:(id)sender {
if ([audioPlayer isPlaying]){         
   [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
   [audioPlayer pause];
   [self pauseTimer];
} else {
  [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
  [audioPlayer play];
  [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(AfterOneSecondsFuction) userInfo:nil repeats:YES];
        }         
}
-(void)pauseTimer{
pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];
previousFireDate = [[timer fireDate] retain];
[timer setFireDate:[NSDate distantFuture]];
}
 -(void)resumeTimer{
float pauseTime = -1*[pauseStart timeIntervalSinceNow];
[timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];
[pauseStart release];
[previousFireDate release];    
}
-(void)AfterOneSecondsFuction
{
if(!isFirstTime)
{
 isFirstTime=YES;
 return;
 self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                  target:self
                                                selector:@selector(displayviewsAction:)
                                                userInfo:nil
                                                repeats:NO];

} else if (!isFirstTime){
  isFirstTime=NO;
  return;
  [self resumeTimer]; 

     }
}    

- (void)displayviewsAction:(id)sender
{  
  First *firstController = [[First alloc] init];
firstController.view.frame = CGRectMake(0, 0, 320, 480);
CATransition *transitionAnimation = [CATransition animation];   
[transitionAnimation setDuration:1];
[transitionAnimation setType:kCATransitionFade];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionEaseIn]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFade];
[self.view addSubview:firstController.view];
[self.view addSubview:toolbar];
[firstController release];   
}

-(void)Second 
{
 Second *secondController = [[Second alloc] init];
secondController.view.frame = CGRectMake(0, 0, 320, 480);
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:kCATransitionReveal];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionReveal];
[self.view addSubview:secondController.view]; 
[self.view addSubview:toolbar];
[secondController release];
self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(Third) userInfo:nil repeats:NO];
 }

Looks like when play is pressed first it is only toggling to pause button not checking the function isFirstTime or not and not starting the timer and executing displayviewsaction. 看起来像是第一次按下播放按钮时,只是切换到暂停按钮,而不检查功能是否为isFirstTime ,并且不启动计时器并执行displayviewsaction。

If anyone can tell why it is not happening and what im doing wrong. 如果有人能说出为什么它没有发生以及我在做什么错。

Thanks for help. 感谢帮助。

BOOL isFirstTime

//Somewhere where the object is set up, isFirstTime should be set to YES


- (void)playpauseAction:(id)sender {

//When the button is pressed

if(isFirstTime) {

//Load the sound file
//Start playing the sound
//Start view controller timers
//Change the button image to paused
isFirstTime = FALSE;

}

else {

//The button has already been pressed

if ([audioPlayer isPlaying]) {

//If the sound is playing

//Stop playing the sound
//Stop view controller timers
//Change the button image to playing

}

else {

//Resume playing the sound
//Start view controller timers
//Change the button image to paused

}

}


}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM