UIWebView和Safari渲染方式不同

时间:2013-01-14 20:54:13

标签: iphone ios objective-c xcode cocoa-touch

我有一个UIWebView,它适用于我所拥有的论坛的移动风格。在Safari中,它看起来很棒。

然而,在我UIWebView内部存在一个重大问题。

引用或编辑帖子时,HTML会显示在BBcode内。此外,发布代码会导致忽略换行符。此问题将导致我的应用程序完全无法使用。

webview加载如下:

  //display the webview
    NSString *fullURL = @"http://www.mysite.com";
    NSURL *url = [NSURL URLWithString:fullURL];
    NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:url];
    [_webTest loadRequest:requestObj];

这就是它在移动Safari内部的正确看法(正确)

enter image description here

最后,看看UIWebView(错误地)

的内部情况

enter image description here

有什么可能改变它在移动版Safari与UIWebView之间呈现的方式?我认为关键是他们应该看起来一样!

1 个答案:

答案 0 :(得分:2)

这是因为移动版Safari和webview具有不同的用户代理值 查看此SO帖子,其中包含类似问题:Change User Agent in UIWebView (iPhone SDK)

来自公认解决方案的代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {
    NSMutableURLRequest *request = (NSMutableURLRequest *)req;

    if ([request respondsToSelector:@selector(setValue:forHTTPHeaderField:)]) {
        [request setValue:[NSString stringWithFormat:@"%@ Safari/528.16", [request valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User_Agent"];
    }
    return YES; 
}