iPhone - возможно ли скрыть родную полосу прокрутки в UIWebView? - PullRequest
15 голосов
/ 11 мая 2009

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

Заранее спасибо,

William

Ответы [ 6 ]

35 голосов
/ 04 июля 2013

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

Вы можете получить прямой доступ к представлению прокрутки, связанному с представлением в Интернете. (Только для чтения) в 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.

11 голосов
/ 12 мая 2009

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

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

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

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

5 голосов
/ 21 марта 2012

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

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;  
    }
}
3 голосов
/ 06 мая 2018

В Свифт:

    webView.scrollView.showsHorizontalScrollIndicator = false
    webView.scrollView.showsVerticalScrollIndicator = false
0 голосов
/ 01 сентября 2017

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

yourWebView.scrollView.showsHorizontalScrollIndicator = false
yourWebView.scrollView.showsVerticalScrollIndicator = false
0 голосов
/ 11 марта 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...