2011-11-22 95 views
2

我的一個組件大量使用MPMoviePlayerController,並且最近出現了一個奇怪的錯誤;當使用標準用戶界面(例如MPMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen;時,玩家永遠不會改變播放/暫停按鈕(在屏幕截圖中間的那個東西)的狀態。MPMoviePlayer標準接口播放/暫停狀態反射問題

enter image description here

的功能保持不變,但球員狀態不是由UI體現。

當通過點擊屏幕上同時播放影片時帶來了控制,我看戲碼。我期望的是當玩家正在玩時暫停符號。當點擊播放符號時,播放器進入暫停模式。但是符號不會改變。當再次點擊該播放符號時,播放器繼續播放,就像預期的那樣。

的問題已經引入了iOS5的和以前的IOS版本並沒有出現。

用於驗證iOS5的問題,我創建了是不是用我自己的框架,果然沒有出現問題的一個簡約的球員,因此它必須是我的代碼觸發這個怪癖。不幸的是,我的代碼非常大(約3千行),所以我不能在這裏發佈。

我知道有人能夠回答沒有源代碼這個問題的機會相當渺茫,因爲它似乎直接連接到我的代碼。我現在絕望,我只是抓住機會,希望有一點奇蹟,有人真的有這樣的問題,並知道如何觸發/刪除它。

回答

1

嗯,看來我找到了答案(和我所說的iOS5中的bug)...

原因的MPMoviePlayerController得到刺激上的播放按鈕的狀態簡直是我的初始化代碼的順序。

對於觸發這個問題,所有你需要做的就是運行這個代碼;

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
[self.view addSubview:moviePlayer.view]; 

您將看到一個不改變Pay/Pause狀態的播放器UI。

把事情再正常工作,你必須設定播放時間之前,移動電話setContentURL。

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[self.view addSubview:moviePlayer.view]; 

我沒有在蘋果公司(雷達錯誤ID#10484668)提交一個錯誤 - 將讓你張貼在他們的答案。

OpenRadar Bug Report

+0

我遇到了同樣的問題,它確實與setContentPlaybackTime函數有關 – WilsonL

1

我也經常被看到這種行爲,但不幸的是簡單地切換調用的順序setContentURL和設置初始和播放時間並沒有區別。

我發現我做錯了。我將播放時間設置爲-1以指示當我應該指定爲零時流的開始。改變這一點解決了我的問題。