0

伙计们,

我想制作 UITableView,其中一些单元格是 Web 视图。

所以,我为他们加载了 html。

我的代码:

 NSString *md5HTML = [adm_post_dict[@"html"] MD5];

        SKWebViewCell *cell = [tableView dequeueReusableCellWithIdentifier:md5HTML];

        if (!cell) {
            cell = [[SKWebViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:md5HTML];

            cell.owner = self;
            cell.height = [adm_post_dict[@"height"] floatValue];
            cell.html = adm_post_dict[@"html"];
        }

        return cell;

SKWebViewCell.m:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width, self.contentView.frame.size.height)];
        [webView setScalesPageToFit:NO];
        webView.scrollView.scrollEnabled = NO;
        [self.contentView addSubview:webView];

        self.contentView.backgroundColor = [UIColor redColor];
    }
    return self;
}
- (void) prepareForReuse {
    [webView stopLoading];
}
- (void) setHeight:(float)height {
    webView.frame = CGRectMake(0, 0, self.contentView.frame.size.width, height);
}
- (void) setOwner:(NSObject<UIWebViewDelegate> *)owner {
    [webView setDelegate:owner];
}

- (void) setHtml:(NSString *)html {
    if (![_html isEqualToString:html]) {
        _html = html;

        [webView stopLoading];
        [webView loadHTMLString:[NSString stringWithFormat:@"<!DOCTYPE html><html><body>%@</body></html>",html] baseURL:[NSURL URLWithString:@"http://stylefie.com/"]];
    }
}


@end

问题:

  1. 它适用于 iOS 6,但速度很慢。
  2. 它在 iOS 7 上运行很快,但有时 web 视图不显示任何内容并将其发送到控制台:

void SendDelegateMessage(NSInvocation *): 委托 (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) 等待 10 秒后返回失败。主运行循环模式:kCFRunLoopDefaultMode

你有什么想法,我该如何解决这个问题?有没有其他方法可以做同样的工作?

4

1 回答 1

0

尝试将 baseURL:nil 放在

[webView loadHTMLString:[NSString stringWithFormat:@"<!DOCTYPE html><html><body>%@</body></html>",html] baseURL:nil];
于 2013-10-28T20:56:06.197 回答