2011-12-12 82 views
2

我有一个iPad应用程序,应该显示移动谷歌UIWebView。它的宽度和iPhone一样是320px,我已经设置了用户代理,以便加载移动Google。但是该网站比UIWebView更宽,尽管该网站针对手机屏幕进行了优化。 这是我创建Web视图代码:iPad的UIWebView与iPhone网站

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

我能做些什么,使之适合?它应该与其他非移动页面一起工作。

回答

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

然后WebView被调整大小,但我希望webview像iPhone一样是320x480像素。但是,内容不适合在iPhone上使用。 – icant

1

我知道这个人是老了,但以供参考。您无法默认设置UIWebView的User-Agent字符串(尽管您似乎可以在应用程序启动时通过NSUserDefaults设置全局持久性更改)。但是,让我们假设你只是想为你的谷歌请求做到这一点,而不是一切。首先,最快,最肮脏的方法是method swizzling私人选择器。然后,您可以为每个NSURLRequest设置标题字段。这是使用私有API的风险,但它确实有效。

另一种方法涉及更多的工作,但不使用任何私有API,将子类NSURLProtocol,让它接管HTTP模式,然后使用第三方HTTP请求系统(例如ASIHTTPRequest)来管理内容检索。您将拥有最终控制权,然后您可以将自定义标题信息设置到请求中,而不需要任何私人API使用。