2009-03-31 4 views
8

Sto correndo in un caso in cui ho documentazione HTML in-applicazione che utilizza uno sfondo scuro, ma l'indicatore di scorrimento predefinito per UIWebView si perde in tale contesto. Il seguente è un esempio di questo:Si può dire a UIWebView di utilizzare uno stile indicatore bianco?

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

Con UIScrollView, che UIWebView assomiglia nel suo comportamento, è possibile impostare la proprietà indicatorStyle a UIScrollViewIndicatorStyleWhite, che si traduce nel comportamento desiderato:

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

Non riesco a trovare una proprietà simile nell'interfaccia esposta per UIWebView. C'è un trucco CSS o un altro modo per forzare l'indicatore di scorrimento in uno stile più leggero?

risposta

13

partire IOS 5.0 in poi, si può ora personalizzare il comportamento di scorrimento della visualizzazione Web accedendo alla proprietà 'ScrollView' per ottenere la funzionalità desiderata:

webView.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
1

Analizza le sottoview e verifica un UIScrollView. È quindi possibile impostare l'indicatore in modo programmatico.

+2

Sfortunatamente, UIWebView utilizza un UIScroller per gestire lo scorrimento interno (visto attraversando la gerarchia della vista interna). Questa è una classe definita privatamente, quindi è una pessima idea toccarla. –

1

Non esiste alcuna API pubblica per questo nell'SDK 2.x. File un bug/caso/radar chiedendo in 3.0.

+0

Avevo paura di tanto, ma speravo che qualcuno avesse un trucco che mi era sfuggito. Presenterò una richiesta di miglioramento delle funzionalità. –

6

Se si vuole eseguire la scansione del subviews e tentare di fallire con grazia se qualcosa cambia in futuro questo funziona attualmente:

//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; 
     } 
    } 

Anche se le cose potrebbero ancora rompere in futuro, se setIndicatorStyle: variazioni aspettarsi un valore non enumerato ... ma dubito che ciò accada.