2012-02-27 24 views
1

我有使用MPMoviePlayerViewController的問題。我試圖初始化電影viewDidLoad,然後播放電影touchesBegan。但電影最初開始播放,並在touchesBegan它只顯示完成的電影。MPMoviePlayerViewController電影不會被詢問

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

Tim在下面有一個很好的建議。你可以檢查(通過插入一個NSLog語句),如果由於某種原因加載視圖時可能會調用touchesBegan。 – 2012-02-27 18:21:23

+0

這樣做,電影仍然在播放,但如果我觸摸它播放第二次.... – spankmaster79 2012-02-27 18:33:24

回答

2

考慮把你的[super viewDidLoad]viewDidLoad執行的頂部。這通常會導致不可預知的問題。

此外,只需在viewDidLoad的末尾嘗試添加[mp pause]mp.currentPlaybackTime = 0;即可。

+0

做到了這一點,但電影仍然開始播放... – spankmaster79 2012-02-27 18:30:59

+0

添加更多配送建議 – Tim 2012-02-27 18:39:58

+0

仍然這樣做。也許我必須在真實的​​設備上測試,而不是模擬器。它的行爲很奇怪,就像在http://stackoverflow.com/questions/7909121/funky-errors-using-mpmovieplayerviewcontroller – spankmaster79 2012-02-27 18:49:28

1

確保在初始化播放器時將MPMoviePlayerController的屬性shouldAutoplay設置爲NO

從參考:

shouldAutoplay 

布爾,表示影片是否應該自動開始播放。

@property (nonatomic) BOOL shouldAutoplay 

討論

此屬性的默認值是YES。此屬性確定 當存在足夠的緩衝數據以確保不中斷播放時,基於網絡的內容播放是否自動開始 。

可用性 適用於iOS 3.2或更高版本。 宣稱 MPMoviePlayerController.h

相關問題