Estoy construyendo una tabla con texto que es HTML, por lo que estoy usando un UIWebView como una subvista de mis celdas de tabla personalizadas. Ya me encontré con un problema: al desplazarme hacia abajo en la tabla, UIWebViews tardaría un segundo en actualizar. Por ejemplo, estaría viendo Células en las filas numeradas 1, 2 y 3. Me gustaría desplazarme hacia abajo para decir 8, 9 y 10. Por un momento, el contenido de la UIWebView que estaba visible en la celda n. ° 8 era el contenido de la celda n. ° 1, el contenido de la celda n. ° 9 fue el de la celda n. ° 2, y así sucesivamente.¿Cómo uso UIWebView en una celda de tabla?
Me enteré de que el problema era que UIWebViews simplemente procesaba el texto lentamente. Se sugirió cargar el contenido en el UIWebView en lugar de esperar hasta que la tabla reciba el cellForRowAtIndexPath. Entonces, ahora tengo un objeto de dominio que antes tenía el contenido de texto de WebView, pero ahora tiene una referencia a UIWebView.
Pero ahora parte del contenido de UIWebView se representa, y cuando me desplazo por la tabla, UIWebView se muestra solo como un cuadro gris. Si toco el cuadro gris, en realidad recibirá el toque y actualizará el WebView; por ejemplo, si toco un enlace (que puedo o no puedo hacer, dado que el cuadro es gris y lo sería por un golpe de suerte), la página que estaba vinculada se solicitará y se mostrará correctamente.
- (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];
}
Terminé aceptando este b/c de la realidad de que esto no era algo que se puede hacer con un UIWebView. Personalmente, terminé abandonando la función, pero volveré a visitarla pronto, y lo que voy a hacer en lugar de usar TableView es simularlo usando HTML y CSS, y ponerlo en una sola WebView. Luego usaré WebViewDelegate para clasificar los clics de "interceptar" en los enlaces y determinar si mostrar otro contenido web o realizar alguna otra acción en mi aplicación. – bpapa