IPhone. Можно ли скрыть собственную полосу прокрутки в UIWebView?

Я хотел бы скрыть родную полосу прокрутки/скроллера, которая появляется, когда вы прокручиваете UIWebView, но сохраняете функциональность прокрутки неповрежденной. Возможно ли это?

Спасибо заранее,

Уильям

Ответы

Ответ 1

Кажется, этот вопрос нуждается в обновленном ответе:

Вы можете получить доступ к просмотру прокрутки, связанному с веб-представлением. (Только для чтения) в iOS 5.0 и выше. Я не думаю, что разработчики должны поддерживать что-либо до iOS 5.0, если только в исключительных обстоятельствах.

В документах разработчика Apple.

@property(nonatomic, readonly, retain) UIScrollView *scrollView
Discussion
Your application can access the scroll view if it wants to customize the scrolling behavior of the web view.

Availability
Available in iOS 5.0 and later.
Declared In
UIWebView.h

Теперь вы можете напрямую писать что-то вроде этого:

webView.scrollView.showsHorizontalScrollIndicator = NO;
webView.scrollView.showsVerticalScrollIndicator = NO;

Не нужно переходить в подзаголовки webView.

Ответ 2

UIWebView не наследуется непосредственно из UIScrollView, но вы можете использовать свойства UIScrollView в подкатегории UIWebView:

[(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsHorizontalScrollIndicator:NO];
[(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsVerticalScrollIndicator:NO];

Не знаю, приемлемо ли это, но все строит хорошо, и я думаю, что он должен работать. Пожалуйста, сообщите, если это сработает для вас.

Также рассмотрите вопрос о подаче запроса функции Apple на bugreport.apple.com, чтобы добавить это свойство в будущую реализацию UIWebView.

Ответ 3

Сделайте это так:

for (id subview in self.myWebView.subviews) {
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
        ((UIScrollView *)subview).bounces = NO; 
        ((UIScrollView *)subview).showsVerticalScrollIndicator = NO;    
        ((UIScrollView *)subview).showsHorizontalScrollIndicator = NO;  
    }
}

Ответ 4

Если кто-то ищет быстрое решение, ниже приведен код swift 3.0

yourWebView.scrollView.showsHorizontalScrollIndicator = false
yourWebView.scrollView.showsVerticalScrollIndicator = false

Ответ 5

Кажется, здесь начинается ответ:

http://discussions.apple.com/thread.jspa?threadID=1781730

Если вы отключите взаимодействие с пользователем, это приведет к удалению полосы прокрутки (это может быть нормально, если отображаемая веб-страница не превышает высоту экрана).

Какой-то javascript-хак, похоже, описывается также, но я не усваиваю его:/(вам нужно иметь доступ к веб-странице, которую вы пытаетесь отобразить, и это может быть не так).