2009-03-31 6 views
8

Ich stoße auf einen Fall, in dem ich in der Anwendung HTML-Dokumentation habe, die einen dunklen Hintergrund verwendet, aber der Standard-Scroll-Indikator für UIWebView geht in diesem Hintergrund verloren. Das Folgende ist ein Beispiel dafür:Können Sie UIWebView mitteilen, einen weißen Anzeigestil zu verwenden?

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

Mit UIScrollView, die UIWebView in seinem Verhalten ähnelt, können Sie die indicatorStyle Eigenschaft auf UIScrollViewIndicatorStyleWhite eingestellt, die in dem gewünschten Verhalten führt:

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

Ich kann nicht scheinen, eine ähnliche Eigenschaft in der exponierten Schnittstelle für UIWebView zu finden. Gibt es einen CSS-Trick oder eine andere Möglichkeit, den Bildlaufanzeiger auf einen helleren Stil zu setzen?

Antwort

13

iOS Ab 5.0 ab, kann man nun das Scrollen Verhalten der Web-Ansicht anpassen, indem Sie die ‚Scroll‘ Eigenschaft Zugriff auf die gewünschte Funktionalität zu erreichen:

webView.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
1

Scannen Sie die Unteransichten und testen Sie auf UIScrollView. Sie können dann das Kennzeichen programmatisch setzen.

+2

Leider UIWebView verwendet eine UIScroller zu handhaben ihre internen Scrollen (gesehen durch Durchlaufen der Hierarchie der internen Ansichten). Dies ist eine privat definierte Klasse, also ist es eine wirklich schlechte Idee, sie zu berühren. –

1

Es gibt keine öffentliche API dafür im 2.x SDK. Füge einen Fehler/Fall/Radar ein und frage danach in 3.0.

+0

Ich hatte so viel Angst, aber ich hatte gehofft, dass jemand einen Trick hatte, den ich vermisst hatte. Ich werde eine Feature-Erweiterungsanforderung einreichen. –

6

Wenn Sie nicht möchten, die Subviews scannen und versuchen, anmutig scheitern, wenn etwas in der Zukunft ändert dies derzeit arbeitet:

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

Obwohl Dinge konnte noch in Zukunft brechen, wenn setIndicatorStyle: Änderungen erwarten ein nicht aufgezählten Wert ... aber ich bezweifle, dass das passieren würde.

Verwandte Themen