16

在我签约构建的应用程序中,我正在提取 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];,我看到以下内容:

在此处输入图像描述

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

4

10 回答 10

6

您应该检查 URL 路径
它应该是 @" http://google.com " 而不是 @"google.com"

于 2014-01-16T08:57:43.113 回答
5

我有同样的问题,在我的情况下,结果是MIMEType没有正确设置。

我通过使用来自 URL 的请求手动创建一个进行测试NSURLConnection,然后实现:

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

观察连接的响应回调。MIMEType结果证明,响应"pdf/pdf"不是,"application/pdf,"并且在我解决该问题后,webview 加载了 url 就好了。

希望这可以帮助。

于 2014-01-22T20:07:35.097 回答
1

您使用的 url 可能无法识别用户代理。这也是旧 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];
于 2013-10-31T18:17:24.820 回答
1

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

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

于 2015-03-12T06:01:48.083 回答
1

斯威夫特 5/ WKWebview

WKWEBVIEW 也会出现同样的问题,类似的解决方案应该作为 UIWebview 提供:在我的情况下,它是 PDF -

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

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

于 2020-07-23T07:22:35.013 回答
1

我在 iOS 10.2.1 UIWebView 上遇到了同样的问题。

当请求带有路径 URL 的 pdf 文件时

pdf 文件的 MIMEType 为“application/x-pdf”。

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

于 2017-02-09T00:58:19.877 回答
0

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

于 2015-03-26T14:14:16.427 回答
0

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

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

这样,我解决了这个问题。

于 2020-12-14T12:59:34.020 回答
0

对于那些报告添加或更正 mime 类型解决了问题的人,我遇到了类似的问题。就我而言,我试图打开一个没有文件扩展名的本地文件(例如“my-dir/my-file”),这导致了可怕的"Frame Load Interrupted"错误(以及"Unbalanced calls to begin/end appearance transitions for UIViewController")。添加文件扩展名(例如“my-dir/my-file.pdf”)为我解决了这个问题。

于 2017-05-16T22:37:23.093 回答
-18

很清楚..您没有设置 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];
于 2014-09-17T13:32:23.993 回答