我有一個MPMoviePlayerController的問題。當我正在觀看視頻,並點擊左上角的「完成」按鈕時,MoviePlayer不會消失,即使代碼好像是叫:MPMoviePlayer不會在[moviePlayer.view removeFromSuperview]和[moviePlayer release]上消失
NSURL *url = [NSURL URLWithString:article.enclosureLink];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
// Set movie player layout
[moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
[moviePlayer setFullscreen:YES];
// May help to reduce latency
[moviePlayer prepareToPlay];
// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieReadyToPlay:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:moviePlayer];
而且選擇:
- (void) movieReadyToPlay:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
if(moviePlayer.loadState == MPMovieLoadStatePlayable){
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
//moviePlayer.shouldAutoplay = YES;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
[moviePlayer play];
}
}
- (void) moviePlayBackDidFinish:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
[moviePlayer setFullscreen:NO animated:YES];
[moviePlayer.view removeFromSuperview];
[moviePlayer release];
NSLog(@"Finished movie!");
}
這在我看來非常簡單的代碼,但我必須做出一個愚蠢的錯誤。 NSLog顯示該函數被調用,但玩家停留在原地,無法擺脫它。
另外,玩家在被指稱釋放後仍然可以運作的事實似乎表明存在根本性錯誤,我只是不明白。
有沒有人有建議?
[更新:] 在iPhone模擬器中奇怪的是它工作正常!
[Update2:] 我試過並創建了一個特定的UIview控制器,即使它不是我想要做的動畫不太好的方式。但是我學到的是我有同樣的問題。這似乎需要解僱球員來做些事情,但它會再次開始。
當我把[self.moviePlayer setFullscreen:YES animated:YES];在viewDidApear中,點擊播放器中的「完成」按鈕,當我點擊完成按鈕(viewDidAppear被再次調用)時,播放器重新開始視頻。所以觸發了一些事情,所以在我看來,讓視頻重新開始。
如果我把它放在viewDidLoad中,那麼系統的工作原理,但顯卡混合和困惑......
任何幫助是非常,非常讚賞,因爲我花兩天時間在這現在未做的頭部或尾部它!
您是否找到解決方案?我遇到了與iOS 5.0相同的問題 – Daniel
我轉移到了MPMoviePlayerViewController,這是一個伎倆,而不是創建我自己的 –