如何解决UIWebView中的“帧加载中断”错误?

时间:2013-10-31 18:02:17

标签: ios iphone objective-c uiwebview youtube

在我签约建立的应用中,我正在提取YouTube视频列表并允许它们显示在应用中。但是,当用户点击YouTube视图的导航控制器中的单元格并显示带有UIWebView的模态视图时,UIWebView将返回错误“帧加载中断”。

我已经通过调试器运行了几十次,在我初始化NSURLRequest之前,一切似乎都很顺利。显示模态视图时,以下是在ViewController的-viewDidLoad方法中运行的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _webView = [[UIWebView alloc] init];
    _webView.delegate = self;
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url];
    [_webView loadRequest:request];
}

但是,当我在[_webView loadRequest:request];行上启动调试器时,我会看到以下内容:

enter image description here

有谁知道为什么UIWebView会返回错误?

10 个答案:

答案 0 :(得分:6)

您应该检查网址路径
它应该是@“http://google.com” 而不是@“google.com”

答案 1 :(得分:3)

我有同样的问题,在我的情况下,事实证明MIMEType没有正确设置。

我通过手动创建带有来自URL的请求的NSURLConnection进行测试,然后实施:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

观察连接的响应回调。答案的MIMEType原来是"pdf/pdf"而不是"application/pdf,",我解决了这个问题后,webview加载了网址就好了。

希望这有帮助。

答案 2 :(得分:1)

您使用的网址可能无法识别用户代理。这也是旧iOS版本中出现的问题,但似乎已在iOS 7中返回。尝试将此添加到您的appdelegate didFinishLaunchingWithOptions:

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

答案 3 :(得分:1)

使用https://www.google.comhttp://www.google.com

实际上 https:// 是关键字。

答案 4 :(得分:1)

我在iOS 10.2.1 UIWebView上面临同样的问题。

请求带路径URL的pdf文件

pdf文件包含MIMEType" application / x-pdf"。

所以我改为" application / pdf"并且可以阅读这个

答案 5 :(得分:1)

Swift 5 / WKWebview

相同的问题发生在WKWEBVIEW上,应将类似的解决方案作为UIWebview提供: 就我而言,它是PDF-

webView.load(Data.init(contentsOf: url), mimeType:"application/pdf", characterEncodingName: "UTF-8", baseURL: url)

这应该用于从Web加载PDF文件。

答案 6 :(得分:0)

显示帧加载中断错误的原因是www.youtube.com正在执行重定向到m.youtube.com,而UIWebView不喜欢。为了疯狂地推测,我会引用可能的安全隐患?我可以通过直接链接到移动网站来解决此问题,从而无需重定向youtube。

答案 7 :(得分:0)

我遇到类似的问题,那些报道添加或更正mime类型的人修复了这个问题。在我的情况下,我试图打开没有文件扩展名的本地文件(例如" my-dir / my-file"),这导致了可怕的"Frame Load Interrupted"错误(以及{{ 1}})。添加文件扩展名(例如" my-dir / my-file.pdf")为我纠正了这个问题。

答案 8 :(得分:0)

如果webView已经在加载过程中,请不要加载webView

if !self.webView.isLoading {
    let request = URLRequest.init(url: url)
    self.webView.load(request)
}

这样,我可以解决此问题。

答案 9 :(得分:-15)

很明显..你没有设置WebView的“框架”。 使用此:

_webView = [[UIWebView alloc] initWithFrame:self.view.frame]; //give a proper Rect value
_webView.delegate = self;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url];
[_webView loadRequest:request];