0

ビデオの再生が停止すると情報ページを表示するアプリを作成しようとしています。ここに投稿された同様の質問を見て、実装しようとしましたが、まだ機能しません。movieFinishedCallback メソッドに NSLog を入れましたが、それが表示されなかったので、呼び出されないと思います。誰かがそれを理解するのを手伝ってくれますか?

これが私の実装コードです...

-(IBAction)playvideo {


    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"sample" ofType:@"mov"]];

    MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc]
                                                     initWithContentURL:url];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(movieFinishedCallback:)                                                 
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:playercontroller];



    [self presentMoviePlayerViewControllerAnimated:playercontroller];

    playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile;


    [playercontroller.moviePlayer play];


    playercontroller = nil;

} 


- (void) movieFinishedCallback:(NSNotification*) notification {

  NSLog (@"The video ended");

  MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];    
    player = nil;


    View2 *second =[[View2 alloc] initWithNibName:nil bundle:nil];

    [self presentModalViewController:second animated:YES];

}
4

2 に答える 2

0

最後にそれを機能させました!MPMoviePlayerViewController が NSNotificationCenter に応答しないという事実と関係があるかどうかはわかりませんが、代わりに MPMoviePlayerController を使用してビデオを表示し、movieFinishedCallback の通知を登録してから、movieFinishedCallback メソッドを使用してビューを切り替えました。動画再生についてはこちらのチュートリアルhttp://www.techotopia.com/index.php/Video_Playback_from_within_an_iOS_5_iPhone_Applicationをご覧ください。唯一のことは、ビデオが横向きに回転しないことです!

于 2012-08-02T16:10:54.663 に答える
0

ムービーが終了すると、おそらくコールバックされると思いますが、View2 を提示するときに失敗します。

View2 は UIViewController のサブクラスですか? nil を initWithNibName: に渡して有効な結果が得られる方法がわかりません。そこに到達したことを証明するために、movieFinishedCallback の NSLog をお勧めします。次に NSLog(@"second = %@", second); 私の推測では、それはゼロです。

修正は、有効なペン先を使用するか、ストーリーボードから実際にView Controllerをロードすることです...

// @"MainStoryboard" should be the name of the storyboard containing your VC
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

// @"SomeViewController" has to be set on the attributes inspector of the VC
// in the storyboard
SomeViewController *newVC = [storyboard instantiateViewControllerWithIdentifier:@"SomeViewController"];
[self presentModalViewController:newVC animated:YES];
于 2012-07-31T23:44:20.780 に答える