Воспроизведение видео из Javascript на контроллере UINavigation в iPhoneSDK - PullRequest
0 голосов
/ 01 марта 2011

У меня есть приложение, и, нажав кнопку, я хочу создать UINavigationController на лету.Текущее представление на navigationController будет UIWebView, отображающим JavaScript со встроенным видео в нем.Когда я нажимаю кнопку воспроизведения видео, видео начинает воспроизводиться, но я не могу увидеть видео на переднем плане.Я могу посмотреть видео, только если полностью отклоню UINavigationController.

. Как мне убедиться, что при нажатии на кнопку «Воспроизвести» в UIWebView внутри UINavigationController,отображает видео в собственном плеере на переднем плане, и когда я нажимаю «Готово» в собственном плеере, я возвращаюсь к «UINavigationController»?

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Ниже приведен фрагмент кода того, как я создаю свой UIViewController, который должен визуализировать видео:

UIViewController *adViewController = [[UIViewController alloc] init];
UIWebView *adView = [[UIWebView alloc] initWithFrame:r];
[adView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:adHTML]]];
adViewController.view = adView;

"adHTML" - это URL-адрес, содержащий javascript, в который встроено видео.

0 голосов
/ 01 марта 2011

Как вы отображаете инициализацию контроллера просмотра видео?

Вы создаете экземпляр и представляете его как модальное представление?

Это также отличается в зависимости от того, какую версию iOS вы используете:

NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
NSURL *videoURL = [NSURL fileURLWithPath:videoPath];

if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 3.2) {
    NSLog(@"> 3.2");

    MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];

    self.playerController = player;

    [player release]; player = nil;

    [self presentMoviePlayerViewControllerAnimated: self.playerController];
    self.playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:self.playerController.moviePlayer];


    [self.playerController.moviePlayer play];

} 
else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) {
    NSLog(@"< 3.2");

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: videoURL];

    player.scalingMode = MPMovieScalingModeAspectFill;

    // Register for the playback finished notification
    [[NSNotificationCenter defaultCenter]
     addObserver: self
     selector: @selector(playbackFinished:)
     name: MPMoviePlayerPlaybackDidFinishNotification
     object: player];

    // Movie playback is asynchronous, so this method returns immediately.
    [player play];
...