¿Cómo coloco un UIWebView en una celda de vista de tabla y mantengo sus barras de desplazamiento?

StackOverflow https://stackoverflow.com/questions/443333

  •  22-07-2019
  •  | 
  •  

Pregunta

¿Cómo puedo colocar un UIWebView en una celda de vista de tabla y mantener las barras de desplazamiento de UIWebView? Mi vista de tabla también tiene varias celdas y un marco de encabezado, y necesito que sea desplazable porque tiene muchas filas.

El texto se muestra perfectamente bien cuando uso UITextView y también muestra desplazadores, pero el problema es que mi contenido es texto enriquecido, por lo que no tengo otra opción que mostrar el contenido en UIWebView. ¿Alguna idea, hacks?

¿Fue útil?

Solución

A menos que Apple haga algo al respecto, esto no puede funcionar. Tanto UITableView como UIWebView admiten desplazadores, y se contradicen entre sí. Los desplazadores UITableView tienen prioridad, por lo que cada vez que se realiza una operación de desplazamiento, la acción se envía a UITableView en lugar de a UIWebView.

Por alguna razón, cuando se usa UITextView con UITableView, los scrollers funcionan para ambos.

Otros consejos

El problema con la adición de UIWebView en una celda de la tabla es que ambos objetos son desplazables (vista de tabla y vista web) lo que creará complicaciones si no se usa adecuadamente. ¿Su vista de tabla tiene otras celdas además de uiwebview? ¿y necesitas que la vista de tabla sea desplazable? En caso de que la vista de tabla no sea desplazable, active el desplazamiento en la vista web y desactívelo para la vista de tabla. Eso debería funcionar.

Pero si solo desea mostrar texto, ¿por qué no usar un UITextView (aunque también enfrentará el mismo problema para UITextView)?

Acabo de encontrar esto en la documentación de UIWebView:

" Importante: no debe incrustar objetos UIWebView o UITableView en objetos UIScrollView. Si lo hace, puede producirse un comportamiento inesperado porque los eventos táctiles para los dos objetos se pueden mezclar y manejar incorrectamente. & Quot;

Las barras de desplazamiento se agregan automáticamente cuando coloca contenido en su UIWebView. Asegúrese de desmarcar " Escala la página para ajustar " en el generador de interfaces, por lo que la página no se vuelve a escalar cuando se muestra.

UIWebView mostrará automáticamente barras de desplazamiento cuando tenga contenido que exceda la altura de UIView.

Puede colocar un UIWebView en un UIScrollView y tener ambos desplazables configurando la propiedad canCancelTouchEvents de UISCrollView en NO . Si solo toca, UIScrollView se desplazará. Si mantiene presionado el dedo por un corto período de tiempo y luego comienza a moverse, UIWebView se desplazará.

Pruebe este truco rápido para ver si puede obligar a la vista web a mostrar un indicador de desplazamiento: ((UIScrollView *) [webView.subViews objectAtIndex: 0]). ShowsVerticalScrollIndicator = YES;

El enfoque más completo es dividir el contenido de su celda en un resumen y detalle. Mostrar el resumen en cada celda, pero sin detalles. Después de seleccionar una celda, use una nueva pantalla para mostrar el contenido completo de la celda seleccionada. Esto evita por completo el problema de usabilidad de tener una vista desplazable dentro de una vista desplazable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top