带有iPhone网站的iPad UIWebView

时间:2011-12-12 16:26:29

标签: ios ipad uiwebview

我在iPad应用中有一个UIWebView,可以显示移动版Google。它像iPhone一样宽320像素,我设置了用户代理,以便加载移动谷歌。但该网站比UIWebView更广泛,尽管该网站针对移动屏幕进行了优化。 这是我创建Web视图的代码:

    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 个答案:

答案 0 :(得分:1)

更改此行:

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)];

答案 1 :(得分:1)

我知道这个是旧的,但供参考。默认情况下,您无法设置UIWebView的User-Agent字符串(尽管看起来您可以通过应用程序启动时的NSUserDefaults设置全局持久性更改)。但是我们假设您只想为谷歌请求做这件事,而不是一切。首先,最快,最脏的方法是method swizzling私人选择器。然后,您就可以为每个NSURLRequest设置标题字段。使用私有API会产生风险,但确实有效。

替代方案,涉及更多工作,但不使用任何私有API将是子类NSURLProtocol,让它接管HTTP模式,然后使用第三方HTTP请求系统(例如ASIHTTPRequest)管理内容检索。您将拥有终极控制权,然后您可以将自定义标头信息设置到请求中,而无需任何私有API使用。

相关问题