I have a problem using MPMoviePlayerViewController. I’m trying to initialize the movie on viewDidLoad and then play the movie on touchesBegan. But the movie initially starts playing and on touchesBegan it only shows the finished movie.
ViewController.h file
@interface ViewController : UIViewController{
MPMoviePlayerController *moviePlayer;
MPMoviePlayerViewController *mpviewController;
MPMovieControlStyle controlStyle;}
- (IBAction)touchesBegan:(id)sender;
@property (nonatomic) MPMovieControlStyle controlStyle;
@end
ViewController.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view addSubview:mpviewController.view];
[moviePlayer play]; }
- (void)viewDidLoad
{
NSString *movpath = [[NSBundle mainBundle]
pathForResource:@"my_moviefile"
ofType:@"m4v"];
mpviewController =
[[MPMoviePlayerViewController alloc]
initWithContentURL:[NSURL fileURLWithPath:movpath]];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mpviewController];
MPMoviePlayerController *mp = [mpviewController moviePlayer];
// [mp setMovieControlMode:MPMovieControlModeHidden];
// [mp.view setFrame:CGRectMake(0, 0, 250, 263)];
mp.controlStyle = MPMovieControlStyleNone;
[mp prepareToPlay];
[super viewDidLoad];
}
If I put all the code in touchesBeganit works as expected, but the movie still has to load, but I want to preload it and then do something again when it finished playing.
Any clues?
Regards
Consider putting your
[super viewDidLoad]at the top of yourviewDidLoadimplementation. This often causes unpredictable problems.Also, just try adding
[mp pause]andmp.currentPlaybackTime = 0;at the end ofviewDidLoad.