2012-10-23 4 views
1

MPMoviePlayerViewController로 비디오를 재생하고 싶습니다. 그래서 내 뷰 컨트롤러에서 나는 MPMoviePlayerLoadStateDidChangeNotification의 옵서버로 등록합니다.MPMoviePlayerLoadStateDidChangeNotification은 iOS 5에서 작동하지만 iOS 6에서는 작동하지 않습니다.

self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]]; 

및 통지가 도착하기를 기다립니다

나는 다음 MPMoviePlayerViewController을 초기화.

MPMoviePlayerController* playerController = notification.object; 

if ([playerController loadState] & MPMovieLoadStatePlayable) { 
    if (self.mPlayerVC) { 
     [self presentMoviePlayerViewControllerAnimated:self.mPlayerVC]; 
    } 
} 

사람이 아이폰 OS 5가 아닌 아이폰 OS 6 작동 이유를 생각 : 내가이 코드를 실행 않을 때? 감사합니다

답변

2

iOS 6 'MediaPlayer.framework에 버그가있는 것 같습니다. MPMoviePlayerViewController

self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]]; 
[self.mPlayerVC.moviePlayer prepareToPlay]; 

를 초기화하는 후 내가 prepareToPlay 전화를 재생할 수있는 비디오를 얻으려면 지금 알림 다시 올하지만 응용 프로그램 충돌이 나는 MPMoviePlayerLoadStateDidChangeNotification에 대해 호출 방법에 [self presentMoviePlayerViewControllerAnimated:self.mPlayerVC];를 호출 할 때.

충돌이

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) { 
[self presentViewController:self.mPlayerVC animated:YES completion:nil]; 
} 
else if ([self respondsToSelector:@selector(presentModalViewController:animated:)]) { 
[self presentModalViewController:self.mPlayerVC animated:YES]; 
} 
처럼 뭔가

[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC]; 

을 대체 방지하려면

관련 문제