user1567555
user1567555

Reputation: 21

Mpmovieplayercontroller video pause while clicking button for another functionality

i am using MPMovieplayerController for playing video, while im clicking some other button i.e i want to pause my video wherever its playing again. i click play means i want to play while its pausing.But for me now when i click button means my video was stopped.But i want to pause instead of stop. My sample code here

    - (IBAction) playvideo
{
    NSURL *url = [NSURL URLWithString:@"http://xyz/video1.mp4"];
    movieplayer = [[[MPMoviePlayerController alloc]initWithContentURL:url] retain]; 
movieplayer.view.frame=CGRectMake(25,54,658,460);    
    [self.view addSubview:movieplayer.view];
    [movieplayer play];
}

-(void)buttononclick
{

    [movieplayer pause];
    [movieplayer.view removeFromSuperview];

    for (int i = 0; i < 13; i++)
    {
CGRect frame;
frame.origin.x = 150 * i;
frame.origin.y = 0;
frame.size = CGSizeMake(140, self.scrollView.frame.size.height);
        [scrollView setShowsHorizontalScrollIndicator:NO];



        UIImageView *temp1 = [[UIImageView alloc] initWithFrame:CGRectMake(25, 7, 75, 75)];
        [temp1 setImage:[UIImage imageNamed:@"sti15.png"]];
        [self.scrollView addSubview:temp1];


        UIImageView *temp2 = [[UIImageView alloc] initWithFrame:CGRectMake(110, 7, 75, 75)];
        [temp2 setImage:[UIImage imageNamed:@"sti16.png"]];
        [self.scrollView addSubview:temp2];


        UIImageView *temp3 = [[UIImageView alloc] initWithFrame:CGRectMake(195, 7, 75, 75)];
        [temp3 setImage:[UIImage imageNamed:@"sti17.png"]];
        [self.scrollView addSubview:temp3];

}
    self.scrollView.contentSize = CGSizeMake(165 * 10, self.scrollView.frame.size.height);
    self.scrollView.pagingEnabled=0;
}

- (void)viewDidDisappear:(BOOL)animated
{
   // [self setDescText:nil];
[super viewDidDisappear:animated];
    [movieplayer pause];
    [movieplayer.view removeFromSuperview];
}

Upvotes: 0

Views: 2218

Answers (3)

Atwood Wong
Atwood Wong

Reputation: 51

you can add target to the play/pause button. but first you need to catch the button of the mpmovieplayerview.

step 1 list the button. method reference from here

call this method from when the button appear(the video is ready). But remember, this will also catch the full screen button and airplay button.(if available)

- (void)CatchSubviewsOfView:(UIView *)view {

// Get the subviews of the view
NSArray *subviews = [view subviews];

for (UIView *subview in subviews) {

    // Do what you want to do with the subview
    NSLog(@"%@", subview);
    if(subview isKindOfClass:[UIButton class]]){
        // add your target here
        [subview addTarget:self action:@selector(extraAction:) forControlEvents:UIControlEventTouchUpInside];
    }

    // List the subviews of subview
    [self listSubviewsOfView:subview];
}
}

step 2 implement the action

-(IBAction)extraAction:(id)sender{
    NSLog(@"some extraAction");
}

call the catch method sample. [self CatchSubviewOfView:movieplayer.view];

Upvotes: 0

Shanmugasundharam
Shanmugasundharam

Reputation: 2092

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ((movie.playbackState==MPMoviePlaybackStateStopped)||(movie.playbackState==MPMoviePlaybackStatePaused)) 
    {
        [movie play];  
    }
    else
    {
        [movie pause];
    }
}

Try this Code , it will Work

Upvotes: 3

Michael J.
Michael J.

Reputation: 511

Check out the notifications for MPMoviePlaybackStatePlaying, MPMoviePlaybackStateStopped, MPMoviePlaybackStatePaused, and MPMoviePlaybackStateInterrupted.

Something like:

MPMoviePlayerController *player = notification.object;
/* Playback is currently stopped. */
    if (player.playbackState == MPMoviePlaybackStateStopped)
    {
        NSLog(@"MPMoviePlaybackStateStopped");
    }

/*  Playback is currently under way. */
    else if (player.playbackState == MPMoviePlaybackStatePlaying)
    {        
        NSLog(@"MPMoviePlaybackStatePlaying");
        }

/* Playback is currently paused. */
    else if (player.playbackState == MPMoviePlaybackStatePaused)
    {
        NSLog(@"MPMoviePlaybackStatePaused");
    }

You can wire up your target action something like this:

if ((_moviePlayer.playbackState == MPMoviePlaybackStateStopped) || (_moviePlayer.playbackState == MPMoviePlaybackStatePaused)) {
            [_moviePlayer play];
        } else {
            [_moviePlayer pause];
        }

Upvotes: 0

Related Questions