在加载完整的html页面时隐藏UIWebView,但是在省略某些标签时却不是这样?

时间:2013-08-20 20:05:15

标签: objective-c uiwebview

我的UIWebView正在显示一些奇怪的行为。当我加载完整的HTML页面时,它只显示一个空白页面。但是,如果我只是加载“嗨”之类的东西,它会显示正常。我的代码如下加载它:

NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString: [NSString stringWithFormat:@"http://site.com/external/get.php?type=phone&url=%@", url]] encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:html baseURL:nil];

假设html是有效的,如果您只输入网址,它将始终返回结果。当前代码显示一个空白的UIWebView,但如果我要将该URL配置为仅显示“Hi”,则会显示。

1 个答案:

答案 0 :(得分:0)

您遇到编码错误。您指定,您的源将是UTF-8编码,而不是。

选项1

让UIWebView自己处理请求有什么问题?这将更容易,你不必乱用编码。

NSString *urlstring = @"http://some.url.com";
NSURL *url = [NSURL URLWithString:urlstring];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];

选项2

尝试使用NSASCIIStringEncoding代替NSUTF8StringEncoding。已经为我做了快速测试。其他NSStringEncoding枚举可在此处找到:http://api.monobjc.net/html/T_Monobjc_Foundation_NSStringEncoding.htm

为了未来:

不要忽略错误。

NSError *error;
NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString: [NSString stringWithFormat:@"http://site.com/external/get.php?type=phone&url=%@", url]] encoding:NSUTF8StringEncoding error:&error];
if (error)
    NSLog(@"Error: %@", [error localizedDescription]);

在您的情况下,这很可能会打印出Cocoa error 261到控制台。这意味着您的编码错误,可以通过google和/或stackoverflow轻松找到。

此外,在出现此类问题时,请尝试调试您的应用程序。问题是String为nil,而不是WebView出现故障。