iOS 6的UIWebView问题

时间:2013-02-14 14:17:27

标签: ipad ios6 uiwebview

我在appstore中有一个运行的应用程序,其中包含UIWebView。它在iOS 6.0之前完美运行。在操作系统6中,一些超链接无效,但当我在iPad上使用iOS中的Safari浏览器时,同样的工作正常。

我是否需要添加一些额外的委托方法才能使其正常工作? 目前我正在使用以下代码:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kAuthenticationURL]];
[request setValue:[NSMutableURLRequest userAgentRequests] forHTTPHeaderField:@"User-Agent"];
[request setHTTPMethod:@"POST"];
[request setHTTPShouldHandleCookies:YES];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

NSData *postData = [[NSString stringWithFormat:@"username=%@&code=%@", username, password]
                             dataUsingEncoding:NSASCIIStringEncoding];
[request setHTTPBody:postData];

委托我用过:

1)

- (void)webViewDidStartLoad:(UIWebView *)webView

2)

- (void)webViewDidFinishLoad:(UIWebView *)webView

在这个方法中我使用了以下内容来加载数据:

[self.webView stringByEvaluatingJavaScriptFromString:@"window.location.reload = function(){};"]; 

3)

- (BOOL)webView:(UIWebView *)webViewshouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType`

我是否需要实施一些额外的功能才能让它在iOS 6中运行?

任何帮助都是适当的......

1 个答案:

答案 0 :(得分:1)

也许您遇到了与此处所述相同的问题:stringByEvaluatingJavaScriptFromString is not working in iOS 6或此处iOS 6 - UIWebView loadHTMLString not working properly

似乎iOS 6加载并以不同的方式呈现页面,然后可能更严格,然后5

你可以尝试按照here

的规定来抑制iOS6的增量渲染
  

suppressesIncrementalRendering

A Boolean value indicating whether the web view suppresses content rendering 
until it is fully loaded into memory.
@property(nonatomic) BOOL suppressesIncrementalRendering

您还可以尝试按照here所述使用您的mac进行调试:

  

附加提示:调试iOS6上的javascript错误,这是一项新功能   这很简单:

     
      
  • 转到iPhone中的“设置”应用程序,输入“Safari”设置并点按底部的“高级”,然后启用“WebKit”   检查员“从那里
  •   
  • 在屏幕上显示要调试的页面(即启动应用程序并转到包含WebView的屏幕以使其可见)
  •   
  • 通过USB连接线将iPhone插入Mac
  •   
  • 在Mac上打开Safari.app,转到“开发”菜单(1),选择带有iPhone名称的菜单项,然后选择您的   在子菜单中的应用。
  •   
     

然后,您就可以调试iPhone中显示的网页了   使用Mac上强大的Web Inspector,可以查看   javascript控制台,DOM树等

     

(1)如果Mac上的Safari中没有“开发”菜单,可以在Safari的“高级”首选项选项卡中启用它   应用

可以找到有关远程调试的更多内容here(一直向下滚动到“远程调试”)或here(WWDC视频会话:“在iOS上调试UIWebViews和网站”)