iPad UIWebView с сайтами iPhone - PullRequest
       0

iPad UIWebView с сайтами iPhone

2 голосов
/ 12 декабря 2011

У меня есть приложение UIWebView в iPad, которое должно отображать Google для мобильных устройств.Его ширина составляет 320 пикселей, как у iPhone, и я настроил User Agent так, чтобы он загружал мобильный Google.Но веб-сайт шире, чем UIWebView, хотя сайт оптимизирован для мобильных экранов.Вот мой код для создания веб-представления:

    NSDictionary *userAgentDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3", @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:userAgentDictionary];

    webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 480)];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
    [webView loadRequest:request];
    [self addSubview:webView];

Вот как это выглядит в данный момент:

how it looks like now

Что я могу сделать, чтобы сделатьэто подходит?Он должен работать и с другими немобильными страницами.

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Я знаю, что это старый, но для справки.Вы не можете установить строку User-Agent UIWebView по умолчанию (хотя может показаться, что вы можете установить глобальное постоянное изменение через NSUserDefaults при запуске приложения).Но давайте предположим, что вы хотите сделать это только для вашего запроса Google, а не для всего.Во-первых, самый быстрый и грязный способ сделать это - метод, взмахивающий приватным селектором.После этого вы сможете установить поля заголовка для каждого NSURLRequest.Это рискует, используя частный API, но он работает.

Альтернатива, включающая больше работы, но не использующая никаких частных API, заключалась бы в создании подкласса NSURLProtocol, если бы он перенял схему HTTP,а затем используйте стороннюю систему HTTP-запросов (например, ASIHTTPRequest ) для управления поиском контента.Вы получите полный контроль, а затем сможете установить в запросе пользовательскую информацию заголовка без использования частного API.

1 голос
/ 12 декабря 2011

Измените эту строку:

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 480)];

на эту:

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...