Отмените фильм, прежде чем он начнет играть - PullRequest
1 голос
/ 08 августа 2010

Я передаю видео на iPhone, и мне не нравится, как MPMoviePlayerController обрабатывает вещи с самого начала. Я заметил, что когда вы нажимаете на строку, чтобы выбрать определенный фильм, приложение просто сидит там, пока оно не будет загружено достаточно для его воспроизведения. Поэтому я открыл UIImageView с загрузочным изображением и хорошим блесном, чтобы держать пользователя в курсе.

Я думаю, у них должна быть возможность отменить воспроизведение фильма, если они устали ждать. Итак, у меня есть кнопка отмены с фоновым изображением.

UIButton *cancel;
    UIImage *cancelImage = [UIImage imageNamed:@"cancel.png"];
    cancel = [UIButton buttonWithType:UIButtonTypeCustom];
    cancel.frame = CGRectMake(0,0, cancelImage.size.width, cancelImage.size.height);
    cancel.center = CGPointMake(35, 20); 
    [cancel setImage:cancelImage forState:UIControlStateNormal];
    [cancel addTarget:self action:@selector(cancelMovie) forControlEvents:UIControlEventTouchUpInside];
    [moviePreviewView addSubview:cancel];

Но я не уверен, что добавить в метод cancelMovie. Я попытался продублировать то, что у меня есть в методе обратного вызова moviePlayBackDidFinish, но он довольно эффектно падает.

Я тоже пробовал:

-(void)cancelMovie {
[theMovie.view removeFromSuperview];
[theMovie release];
}

Но и это ничего хорошего не дает. Я думал, что мог бы вызвать moviePlayBackDidFinish напрямую, но я не думаю, что вы можете вызвать метод уведомления напрямую.

Ваши мысли?

Ответы [ 3 ]

2 голосов
/ 10 августа 2010

Я терпеть не могу отвечать на свой вопрос, но так как у этого вопроса было всего 7 просмотров, я полагаю, это не так важно.Возможно, я не должен публиковать их среди ночи ... никто не видит их, когда вы делаете.

Во всяком случае, я не нашел хорошего решения этой проблемы ... просто взломать.

В методе отмены я сказал MoviePlayer загружать другой, второй фильм, который является той же фотографией, которую я использовал в previewImage.Когда этот «фильм» завершается, он затем вызывает MPMoviePlayerPlaybackDidFinishNotification, очищает и возвращает пользователя обратно, где он был.

0 голосов
/ 12 июля 2011
-(void)cancelMovie
{
    if (_mediaPlayer){
        [_mediaPlayer stop];
        _mediaPlayer.initialPlaybackTime = -1.0;
        _mediaPlayer.contentURL = nil;
        [_mediaPlayer prepareToPlay];
    }
}
0 голосов
/ 06 мая 2011

@ Майкл решение работает. Там может быть улучшение, что нет необходимости воспроизводить видео отмены. Вместо этого вы можете напрямую вызвать MPMoviePlayerPlaybackDidFinishNotification .

[self moviePlayBackDidFinish:nil];

Сначала я реализовал идею Майкла, но в итоге мне не удалось воспроизвести следующее видео.

...