Прекратите прокрутку вверх в UIWebView - iPhone - PullRequest
1 голос
/ 21 мая 2010

Я поместил следующий javascript в мой HTML-файл.

<script TYPE="text/javascript">
    function srk(){
        document.ontouchmove = function(e){ 
            e.preventDefault(); 
        }
    }
</script>

Я прокручиваю свое веб-представление, следуя коду с анимацией.

[myWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: @"window.scrollTo(0,%i);",414*self.initialScrollPosition]];

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

Всякий раз, когда пользователь / я нажимаю на строку состояния iPhone, WebView Bydefault прокручивается вверх. Это не должно быть сделано.

Можно ли предотвратить встроенную функциональность?

Я знаю, что один из вариантов выглядит следующим образом.

((UIScrollView *)[[myWebView valueForKey:@"_internal"] valueForKey:@"scroller"]).scrollsToTop = NO;

Но допустимо ли это делать?

Ответы [ 2 ]

4 голосов
/ 21 мая 2010

Вы можете добавить очень маленький UIScrollView в окне. Тогда нажатие на строку состояния не приведет к прокрутке веб-вида вверх.

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

Более простой способ сделать это - установить для свойства scrollsToTop значения UIScrollView в WebView значение NO.

for(UIView *view in [myWebView subviews]) {
    if([view isKindOfClass:([UIScrollView class])]) {
        [(UIScrollView *)view setScrollsToTop:NO];
    }
}

Я проверял это на iOS 4.0 и 4.3 (iOS 5, похоже, не нуждается в этом).

адаптировано из это .

...