在m文件中声明变量。
BOOL isFirstTime;
我希望如果第一次按下播放按钮然后它应该切换到暂停按钮并检查函数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];
}
首先按下播放时看起来只是切换暂停按钮而不是检查函数isFirstTime
而不是启动计时器并执行displayviewsaction。
如果有人能说出为什么没有发生以及我做错了什么。
感谢您的帮助。
答案 0 :(得分:0)
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
}
}
}