У меня есть приложение, и при нажатии кнопки я хочу создать UINavigationController на лету. Текущий вид на navigationController будет UIWebView отображающим JavaScript со встроенным видео. Когда я нажимаю кнопку воспроизведения видео, оно начинает воспроизводиться, но я не могу видеть видео на переднем плане. Я могу посмотреть видео, только если полностью отклоню UINavigationController.
Как мне сделать так, чтобы когда я нажимаю кнопку "Воспроизвести" в UIWebView внутри UINavigationController, рендерил видео в нативном плеере на переднем плане, а при нажатии на "Готово" в нативном плеере возвращался в " UINavigationController" ?
Ответ 1 · JFoulkes
Как вы показываете инициализацию контроллера просмотра видео?
Вы создаете экземпляр и представляете его в виде модального представления?
Это также зависит от того, какую версию 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];
Ответ 2 · Visu
Ниже приведен фрагмент кода того, как я создаю свой 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, в который встроено видео.