2009-03-31 4 views
8

Me encuentro con un caso en el que tengo documentación HTML en la aplicación que utiliza un fondo oscuro, pero el indicador de desplazamiento predeterminado para UIWebView se está perdiendo en ese fondo. El siguiente es un ejemplo de esto:¿Puedes decirle a UIWebView que use un estilo de indicador blanco?

Image of UIWebView dark scroller http://www.sunsetlakesoftware.com/sites/default/files/so-webview.jpg

Con UIScrollView, que UIWebView se asemeja en su comportamiento, puede establecer la propiedad indicatorStyle a UIScrollViewIndicatorStyleWhite, lo que se traduce en el comportamiento deseado:

alt text http://www.sunsetlakesoftware.com/sites/default/files/so-scrollview.jpg

Parece que no puedo encontrar una propiedad similar en la interfaz expuesta para UIWebView. ¿Hay un truco de CSS u otra forma de forzar el indicador de desplazamiento a un estilo más ligero?

Respuesta

13

A partir de iOS 5.0 en adelante, se puede ahora personalizar el comportamiento de desplazamiento de la vista web mediante el acceso a la propiedad 'ScrollView' para lograr la funcionalidad deseada:

webView.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
1

Escanee las subvistas y pruebe un UIScrollView. A continuación, puede establecer programáticamente el indicador.

+2

Desafortunadamente, UIWebView utiliza un UIScroller para manejar su desplazamiento interno (visto al atravesar la jerarquía de vista interna). Esta es una clase privada, por lo que es una muy mala idea tocarla. –

1

No hay una API pública para esto en el SDK 2.x. Archive un error/caso/radar pidiéndolo en 3.0.

+0

Tenía tanto miedo, pero esperaba que alguien tuviera un truco que me había perdido. Presentaré una solicitud de mejora de funciones. –

6

Si desea escanear los subvistas e intentar fallar con gracia si algo cambia en el futuro, esto funciona actualmente:

//set a white scroll bar 
    for (UIView *subview in [webView subviews]) { 
     if ([subview isKindOfClass:NSClassFromString(@"UIScroller")] || [subview isKindOfClass:NSClassFromString(@"UIScrollView")]) { 
      if ([subview respondsToSelector:@selector(setIndicatorStyle:)]) { 
       [(UIScrollView *)subview setIndicatorStyle:UIScrollViewIndicatorStyleWhite]; 
      } 
      break; 
     } 
    } 

Aunque las cosas podrían sin pérdidas en el futuro si setIndicatorStyle: los cambios que puede esperar un valor no enumerado ... pero dudo que eso suceda.

Cuestiones relacionadas