views:

36

answers:

1

Hi,as the title,when i play movie using moviePlayer I want to know when the playControllerBar will be dismiss,so that i can control my view added in moviePlayer . Is there anyone know that? Tell me ,thanks .

+1  A: 

I'm not 100% sure if I understand you correctly. I assume that what you want to do is:

1) play a movie
2) add a custom view (overlay) on top of the (running) movie.

assuming what i just wrote down, I think you have to consider the following things:

1) adding a custom overlay on top of MPMoviePlayerViewController is (as far as I'm concerned) only allowed/possible if the standard player controls are set to none:

[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];

2) adding your custom overlay on top of the player is basically the same addSubview procedure as on any other view

[moviePlayerViewController.view addSubview:overlay];

the above code / concept will work on 3.2 and later, as i just read now you're obviously developing for 3.0

rather then deleting the first part of my answer i will now explain how to achieve the same effect on 3.0

on 3.0 it's a bit trickier (as you sure know by now). MPMoviePlayerController is not a view Controller and works only in fullscreen-mode. Once the movie starts playing, the keyWindow changes! so We make use of that by implementing the following:

1) within your Class that encapsulates the MPMoviePlayerController, start listening to the UIWindowDidBecomeKeyNotification by doing the following:

        [[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(keyWindowChanged:) 
                                                 name: UIWindowDidBecomeKeyNotification 
                                               object: nil];

2) withing your keyWindowChanged: Method you can add your overlay, the following snipplet is exactly how I implemented it:

- (void)keyWindowChanged: (id) sender {

//NSLog(@"keyWindowChanged");
[[NSNotificationCenter defaultCenter] removeObserver: self name: UIWindowDidBecomeKeyNotification object: nil];
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];

[moviePlayerWindow addSubview: overlayController.view];
[overlayController performSelector:@selector(fadeIn)]; 

}

again, this only works if the MovieControllMode is "hidden" by doing that:

[newMPController setMovieControlMode: MPMovieControlModeHidden];

I hope I could help, cheers sam

samsam
it really helps me a lot ,it's very nice of you ,thank you ,good man~
ben