在我签约建立的应用中,我正在提取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会返回错误?
答案 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.com或http://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];