UIWebView не меняет ориентацию при переключении в ландшафт - PullRequest
0 голосов
/ 15 мая 2011

Я делаю UIWebView следующим образом (случай 2):

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    CGRect frame = CGRectMake(0, 0, 320, 400);
    SongDetailsTVC *infoVC;
    UIWebView *ytView;
    NSString *htmlVideoHTML, *html;
    UIViewController *youtubeController;
    switch (buttonIndex) {
        case 0:
            [self swapLanguage];
            break;
        case 1:
            infoVC = [[SongDetailsTVC alloc] initWithStyle:UITableViewStyleGrouped];
            [infoVC setSongData:songData];
            [infoVC setTitle:@"Song Info"];
            [[self navigationController] pushViewController:infoVC animated:YES];
            [infoVC release];
            break;
        case 2:

            // HTML to embed YouTube video
            htmlVideoHTML = @"<html><head>\
            <body style=\"margin:0\">\
            <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
            width=\"%0.0f\" height=\"%0.0f\"></embed>\
            </body></html>";

            // Populate HTML with the URL and requested frame size
            html = [NSString stringWithFormat:htmlVideoHTML, [songData objectForKey:@"YouTube Link (Value)"], frame.size.width, frame.size.height];

            // Load the html into the webview                        
            ytView = [[UIWebView alloc] initWithFrame:frame];
            [ytView setMediaPlaybackRequiresUserAction:NO];
            [ytView loadHTMLString:html baseURL:nil];

            youtubeController = [[UIViewController alloc] init];
            [youtubeController setView:ytView];
            [youtubeController setTitle:@"YouTube Video"];
            [[self navigationController] pushViewController:youtubeController animated:YES];

            [ytView release];
            [youtubeController release];

            break;
        default:
            break;
    }
}

Проблема в том, что когда я переключаюсь в ландшафтный режим, он не меняет свою ориентацию. Что я делаю неправильно? Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

Вращение определяется контроллером вида, а не видом.Реализация по умолчанию UIViewController shouldAutorotateToInterfaceOrientation: возвращает YES только для портрета;вам нужно будет создать подкласс UIViewController, переопределить этот метод и использовать этот подкласс вместо стандартного UIViewController.

0 голосов
/ 01 июня 2012

UIWebView имеет очень наивный метод определения ориентации с точки зрения, например, медиазапросов CSS3.

Обычно, если он шире, чем высокий, он считается пейзажем, а если он выше, чем широкий, то считается портретом.Поскольку ваш веб-просмотр установлен на 320 х 400, он всегда будет возвращать портрет.

...