Отключить прокрутку в UIWebView разрешено? - PullRequest
89 голосов
/ 22 июня 2011

Я должен показать веб-статью с UITableView под статьей.

Единственный вариант, который я нашел, - отобразить статью в UIWebView в заголовке tableView.

Для этого мне нужно получить высоту содержимого webView и отключить прокрутку для webView.

Я нашел два решения для отключения прокрутки:

for (id subview in webView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).scrollEnabled=NO;

или в JavaScript:

<script type="text/javascript">
touchMove = function(event) {
    event.preventDefault();
}

Я слышал, что первое решение запрещено Apple, но у меня нет никаких доказательств этого. Будет ли мое приложение отклонено с помощью этого решения? Если да, могу ли я использовать второе решение без отклонения?

Ответы [ 18 ]

293 голосов
/ 25 января 2012

Начиная с iOS5 у нас есть прямой доступ к просмотру прокрутки UIWebView.
Вы можете отключить прокрутку и скачки, как это:

webView.scrollView.scrollEnabled = NO; 
webView.scrollView.bounces = NO;
25 голосов
/ 24 марта 2014

Так как этот вопрос все еще применим, есть новый способ сделать это!(iOS 7.0+, возможно, iOS 6 также не подтверждена)

webView.scrollView.scrollEnabled = NO;

Берегите себя:)

20 голосов
/ 13 февраля 2012

Вы можете просто установить для свойства взаимодействия с пользователем веб-просмотра значение no, т.е.

webView.userInteractionEnabled = NO;

Это довольно просто и отлично работает, спасибо:)

12 голосов
/ 07 июня 2012

для всех версий ios вы можете использовать этот код вместо setScrollEnabled:

for (UIView *view in webview.subviews) {
    if ([view isKindOfClass:[UIScrollView class]]) {
       UIScrollView *scrollView = (UIScrollView *)view;
       scrollView.scrollEnabled = NO;
    }
}
11 голосов
/ 31 июля 2013

Используйте это <body ontouchmove="event.preventDefault()">

8 голосов
/ 13 января 2017

SWIFT 3 версия

    webView.scrollView.bounces = false
    webView.scrollView.isScrollEnabled = false
7 голосов
/ 13 февраля 2012

Я думаю, Javascript

<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}

- далеко не лучшее решение.

Действительно:

Ваш первый экзамен или

[[[WebView subviews] lastObject] setScrollingEnabled:NO];

одно (то же самое) может быть отклонено, поскольку не задокументировано, или может вызвать сбой приложения при дальнейшем обновлении ios.

И метод

[[myWebView scrollView] setBounces:NO];

не будет работать с iOS <5. </p>

5 голосов
/ 17 января 2012

[[myWebView scrollView] setBounces: NO];

5 голосов
/ 06 октября 2011

Первое отклонено Apple.Это случилось со мной только сегодня утром.

5 голосов
/ 22 июня 2011
[[[WebView subviews] lastObject] setScrollingEnabled:NO];

это сортировало это для меня

...