我正在构建一个带有一些 HTML 文本的表格,因此我使用 UIWebView 作为我的自定义表格单元格的子视图。我已经遇到了一个问题——当我在表格中向下滚动时,UIWebViews 需要一秒钟才能更新。例如,我将查看编号为 1、2 和 3 的行的单元格。我会向下滚动到 8、9 和 10。有一会儿,在单元格 #8 中可见的 UIWebView 的内容是单元格#1 中的内容,单元格#9 中的内容是单元格#2 中的内容,依此类推。
我了解到问题在于 UIWebViews 只是缓慢地渲染它们的文本。建议尽快将内容预加载到 UIWebView 中,而不是等到表接收到 cellForRowAtIndexPath。所以现在,我有一个域对象,它之前只有 WebView 的文本内容 - 但现在它实际上有对 UIWebView 本身的引用。
但是现在 UIWebView 中的一些内容呈现,当我滚动表格时 UIWebView 仅显示为灰色框。如果我触摸灰色框,它实际上会接收触摸并更新 WebView - 例如,如果我触摸一个链接(我可能会或可能不会这样做,因为该框是灰色的,而且很幸运),链接到的页面将被请求并正确显示。
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
// I suppose this isn't necessary since I am just getting it from the
// Domain Object anyway
content = [[UIWebView alloc] initWithFrame:CGRectZero];
content.backgroundColor = [UIColor blackColor];
[self addSubview:content];
[content release];
}
return self;
}
// called by cellForRowAtIndexPath
- (void)setMyDomainObject:(MyDomainObject*)anObject {
UIWebView *contentWebView = anObject.contentWebView;
int contentIndex = [self.subviews indexOfObject:content];
[self insertSubview:contentWebView atIndex:contentIndex];
}