MPMoviePlayerViewController и пинчинг для полного экрана - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть поиск на сайте, но я не нашел ту же проблему, что и у меня

когда я ущипну свое видео, вызывается уведомление «MPMoviePlayerPlaybackDidFinishNotification».

после того, как кнопка "Готово" ставит видео на паузу и проигрыватель работает плохо ...

Я не понимаю, почему это уведомление называется ...

это мой код

    - (id) init
{
    self = [super init];

    movie=[[MPMoviePlayerViewController alloc] init]; 
    //we init the frame here and after the view rotate the video
    [movie.view setFrame: CGRectMake(0, 0, 1024,768)];

    return self;
}

+ (MoviePlayerManager*) getInstance
{

    static MoviePlayerManager *movieSingleton;

    if (movieSingleton==nil) 
    {
        movieSingleton = [[MoviePlayerManager alloc]init];

    }

    return movieSingleton;

}

- (void) load:(NSURL*) a_videoFile withType:(VideoType)a_type
{

    type = a_type;

    [movie.moviePlayer setContentURL:a_videoFile];

        switch (type) {
        case VT_INTRO:
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallbackIntro:) name:MPMoviePlayerPlaybackDidFinishNotification object:movie.moviePlayer]; 
            break;

        case VT_RESPONSE:
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallbackResponse:) name:MPMoviePlayerPlaybackDidFinishNotification object:movie.moviePlayer]; 
            break;

        default:
            NSLog(@"video Type not initialised");
            break;
    }

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieIsReadyToPlay:) name:MPMediaPlaybackIsPreparedToPlayDidChangeNotification object:movie.moviePlayer]; 


    [movie.moviePlayer prepareToPlay];


}


-(void)myMovieIsReadyToPlay:(NSNotification*)aNotification 
{
    [gsDelegate.view addSubview:movie.view];
    [movie.moviePlayer play]; 

    movie.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;

}

- (void) myMovieFinishedCallbackIntro:(NSNotification*)aNotification 
{
    NSNumber* reason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];

    NSLog(@"%d",reason);

    if(aNotification != nil)
    {

        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:movie.moviePlayer];

        [gsDelegate movieIntroDidStop];

    }
}

NSNumber* reason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];

то же самое для пинч-аута или когда я нажимаю "готово"

спасибо за вашу помощь (и извините за мой плохой английский; op)

1 Ответ

0 голосов
/ 15 июня 2011
NSNumber* reason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey]; 
NSLog(@"%d",reason);

NSNumber - это объект Objective-C, а не примитивный тип C. Вы отображаете указатель на объект, а не значение.

Исправить с помощью:

NSLog(@"%@", reason);

ИЛИ изменить причина в целое число:

int reason = [[userInfo objectForKey:@"MPMoviePlayerPlaybackDidFinishReasonUserInfoKey"] intValue];
NSLog(@"%d", reason);
...