2009-03-31 5 views
8

Я столкнулся с ситуацией, когда у меня есть встроенная HTML-документация, использующая темный фон, но индикатор прокрутки по умолчанию для UIWebView теряется в этом фоне. Ниже приведен пример этого:Можете ли вы сказать, что UIWebView использует белый индикатор?

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

С UIScrollView, который UIWebView напоминает в своем поведении, вы можете установить indicatorStyle свойство UIScrollViewIndicatorStyleWhite, что приводит к желаемому поведению:

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

Я не могу найти похожее свойство в открытом интерфейсе для UIWebView. Есть ли трюк CSS или другой способ заставить индикатор прокрутки более легкий стиль?

ответ

13

Начиная IOS 5.0 года, теперь можно настроить прокрутку поведение веб-просмотра путем доступа к свойству «Scrollview» для достижения желаемой функциональности:

webView.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
1

Сканирование подзонов и проверка UIScrollView. Затем вы можете программно установить индикатор.

+2

К сожалению, UIWebView использует UIScroller для обработки его внутренней прокруткой (видно, пересекая внутреннюю иерархию представлений). Это индивидуально определенный класс, так что это действительно плохая идея, чтобы коснуться его. –

1

Для этого в SDK 2.x для этого нет публичного API. Загрузите ошибку/кейс/радар, запрашивающий его в версии 3.0.

+0

Я так боялся, но я надеялся, что у кого-то есть трюк, который я пропустил. Я подам запрос на улучшение функции. –

6

Если вы хотите сканировать подвиды и попытаться грациозно потерпеть неудачу, если что-то изменится в будущем это в настоящее время работает:

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

Хотя вещи могут еще перерыв в будущем, если setIndicatorStyle: изменения ожидать неперечисленное значение ... но я сомневаюсь, что это произойдет.