MPMoviePlayerController с UIPopoverController - PullRequest
0 голосов
/ 04 мая 2011

Я использую MPMoviePlayerController для воспроизведения видео на UIPopoverController. Когда UIPopoverController dismiss видео продолжает воспроизводиться в фоновом режиме. Есть ли способ остановиться и отпустить MPMoviePlayer.

В моем коде есть FirstViewController и ViewVideoController, которые имеют функцию:

@implementation FirstViewController

- (void)popOverViewDisplay:(id)sender {

//if(![popoverController isPopoverVisible]){
NSLog(@"my popover....");
ViewVideoController *videoController = [[[ViewVideoController alloc] initWithNibName:nil bundle:nil] autorelease];

videoController.contentSizeForViewInPopover =CGSizeMake(550, 460);

popoverController = [[UIPopoverController alloc]
                     initWithContentViewController:videoController];

popoverController.delegate = self;


[videoController release];

popViewBtnFrame = CGRectMake(299, 357, 63, 42);

[popoverController presentPopoverFromRect:popViewBtnFrame               
                                   inView:self.view
                 permittedArrowDirections:UIPopoverArrowDirectionAny
                                 animated:YES];
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {

if (self.popoverController != nil) {

    [self.popoverController dismissPopoverAnimated:YES];
    //[self.popoverController release];
    NSLog(@" if loop popover dismissed");   


    ViewVideoController *videoController = [[ViewVideoController alloc] initWithNibName:@"ViewVideoController" bundle:nil];
    [videoController unloading];
}  

NSLog(@"popover dismissed");    
}

при нажатии кнопки игрок начинает играть в popoverController.

@implementation ViewVideoController


- (void)viewDidLoad {


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

player = [[MPMoviePlayerController alloc] initWithContentURL:url];
//player.movieControlMode = MPMovieControlModeHidden;
player.controlStyle = MPMovieControlStyleDefault;
player.view.frame = CGRectMake(75.0f, 80.0f, 400.0f, 300.0f);
[[self view] setCenter:CGPointMake( [[self view] bounds].size.width / 2, [[self view] bounds].size.height / 2)];
[self.view addSubview:player.view];

[player play];
//[player release];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(myMovieFinishedCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:nil];

    [super viewDidLoad];
}

- (void)myMovieFinishedCallback:(NSNotification*)aNotification {

MPMoviePlayerController* player1 = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:player1];
NSLog(@"stop player");
    [player stop];
}


- (void)unloading {                   //this function called in firstviewcontroller to stop player on dismiss 

NSLog(@"unloading player");
//[player endSeeking];
    [self.player stop];
}

Когда я отклоняю ViewVideoController игрок продолжает играть. Есть ли способ остановить / отпустить игрока при увольнении ViewVideoController

1 Ответ

0 голосов
/ 04 мая 2011

Вы можете использовать метод делегата

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {

[moviePlayer stop];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...