使用MPMoviePlayerViewController时遇到问题。我正在尝试在viewDidLoad
上初始化电影,然后在touchesBegan
上播放电影。但是电影最初开始播放,而touchesBegan
它只显示完成的电影。
ViewController.h文件
@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];
}
如果我把所有代码放在touchesBegan
中,它按预期工作,但电影仍然需要加载,但我想预先加载它,然后在完成播放后再做一些事情。
任何线索?
此致
答案 0 :(得分:2)
考虑将[super viewDidLoad]
放在viewDidLoad
实施的顶部。这通常会导致不可预测的问题。
另外,只需尝试在[mp pause]
末尾添加mp.currentPlaybackTime = 0;
和viewDidLoad
。
答案 1 :(得分:1)
确保在初始化播放器时将MPMoviePlayerController
的属性shouldAutoplay
设置为NO
。
参考文献:
shouldAutoplay
一个布尔值,指示电影是否应自动开始播放。
@property (nonatomic) BOOL shouldAutoplay
讨论
此属性的默认值为YES。此属性确定 是否自动开始播放基于网络的内容 当有足够的缓冲数据以确保不间断播放时。
状况 适用于iOS 3.2及更高版本。 宣告进入 MPMoviePlayerController.h