【问题标题】:Issue with UIWebView in iPadiPad中的UIWebView问题
【发布时间】:2012-07-10 22:19:30
【问题描述】:

我在尝试加载有效 URL 时看到以下消息并且没有网页:

delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) 等待 10 秒后返回失败。主运行循环模式:kCFRunLoopDefaultMode

谁能帮帮我?

使用:iOS 4.x 上的 iPad 2

评论:在 iOS 5.x 上似乎没问题

使用的代码:

    newsWebView=[[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height-50.0-adHeight)];
    newsWebView.dataDetectorTypes = UIDataDetectorTypeAll;
    newsWebView.backgroundColor=[UIColor blackColor];
    [newsWebView setScalesPageToFit:YES];
    [self.view addSubview:newsWebView];
    newsWebView.delegate=self;
    [self webViewLoadRequest];


- (void)webViewLoadRequest 
{
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [newsWebView loadRequest:requestObj];
}

//Delegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    return YES;
}

- (void)webViewDidStartLoad:(UIWebView *)webView {  

}

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    CGFloat scale=newsWebView.contentScaleFactor;
    NSString *jsCommand = [NSString stringWithFormat:@"document.body.style.zoom = %f;",scale];
    [newsWebView stringByEvaluatingJavaScriptFromString:jsCommand];

    [rightButton setEnabled:YES];

    if(titleStatus==1){
        self.title=[newsWebView stringByEvaluatingJavaScriptFromString:@"document.title"];
    }
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    if (error.code == 101) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot Open Page"
                                                        message:[error localizedDescription] delegate:nil
                                              cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alert show];
        [alert release];

    } else if (error.code == -1003) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot Open Page"
                                                        message:@"Server cannot be found." delegate:nil
                                              cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alert show];
        [alert release];

    } else if (error.code == -1009) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot Open Page"
                                                        message:@"No network connection." delegate:nil
                                              cancelButtonTitle:@"Dismiss"      otherButtonTitles:nil];
        [alert show];
        [alert release];

    } else if (error.code == -999) {
        // user probably stopped the web loading
    } else {
        NSLog(@"Error: %@", error.description);
    }
}

【问题讨论】:

    标签: objective-c ios uiwebview uiwebviewdelegate


    【解决方案1】:

    我没有看到你在任何地方设置 WebViews 委托。如果确定在代码中创建 WebView,那么你应该设置它的委托并实现它。

    在设置 WebView 时添加以下行

         [newsWebViewNews setDelegate:self];
    

    并在类头文件中实现UIWebViewDelegate>。

    【讨论】:

    • 匿名:我确实有那个代码,只是忘了把它放在@StackOverflow
    【解决方案2】:

    我为你创建了一个例子试试这个https://www.dropbox.com/s/lch00t0vjrydg77/ActivityIndicator.zip

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2011-08-13
      相关资源
      最近更新 更多