0

プログラムでrewindButtonをplayButtonに接続しました。rewindButtonは、最初から巻き戻して再生するだけで、playButtonは再生から一時停止に切り替わります。rewindButtonメソッドでは、UIButton1が押されたときにステートメントを使用してUIButton2のUIImageを変更します。それはうまく機能しています。

再生ボタンを押して一時停止すると、PlayButtonメソッドは正常に機能します。再開した後でも正常に動作しています。

問題の説明:

rewindButtonを押すと、playButtonのUIImageがPauseImageに変更され、ユーザーが一時停止できるようになります。一時停止を再開すると問題が発生します。When pause is resumed it is reloading view controllers.コードに従って、初めてビューコントローラをロードする必要があります。

-(void)rewind:(id)sender{
audioPlayer.currentTime = 0;
[timer invalidate];
ContainerViewController *viewController = [[[ContainerViewController alloc] init]autorelease];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view]; 
[self.view addSubview:toolbar];
[audioPlayer play];
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                    target:self
                                    selector:@selector(displayviewsAction:)
                                    userInfo:nil
                                    repeats:NO];
    [_playButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];   
 }



-(void)playpauseAction:(id)sender {

if([audioPlayer isPlaying])
{
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
    [audioPlayer pause];
    [self pauseTimer];
    [self pauseLayer:self.view.layer];

}else{
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [audioPlayer play];
    [self resumeTimer];
    [self resumeLayer:self.view.layer];

   if(isFirstTime == YES)
    {
        self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                            target:self
                                            selector:@selector(displayviewsAction:)
                                            userInfo:nil
                                            repeats:NO];
        isFirstTime  = NO;
    } 
    } 
    }

- (void)displayviewsAction:(id)sender
{  

 First *first = [[First alloc] init];
 first.view.frame = CGRectMake(0, 0, 320, 425);
 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:first.view];
 [first release];   
 self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];     
 }

-(void)Second 
{
Second *second = [[Second alloc] init];
second.view.frame = CGRectMake(0, 0, 320, 425);
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:second.view]; 
[second release];
self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(Third) userInfo:nil repeats:NO];
}
4

1 に答える 1

0

巻き戻しメソッドで原因を再開した後、ビューコントローラをリロードしていた理由は、ビューコントローラをロードするためにisFirstTime==YESを追加するのを忘れました。ビューコントローラはリロードする必要はありません。ビューコントローラは、最初からロードを開始するのは初めての場合のみ必要です。

したがって、巻き戻しメソッドでisFirstTime == YESの値を設定した後、一時停止から再開した後、ビューコントローラを最初からリロードしなくなりました。

-(void)rewind:(id)sender{
audioPlayer.currentTime = 0;
[timer invalidate];
ContainerViewController *viewController = [[[ContainerViewController alloc] init]autorelease];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view]; 
[self.view addSubview:toolbar];
[audioPlayer play];
if(isFirstTime == YES){
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                target:self
                                selector:@selector(displayviewsAction:)
                                userInfo:nil
                                repeats:NO];
 isFirstTime  = NO;
}

[_playButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];   
 }

今では正常に動作しています。

于 2012-07-14T15:00:33.063 に答える