2010-05-21 128 views
1

我已经在我的HTML文件中放置了以下JavaScript。停止滚动到UIWebView顶部 - iPhone

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

我滚动我的webview通过下面的代码与一些动画。

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

一切正常,但对我面临的问题如下。

每当用户/我点击iPhone的状态栏时,WebView按默认滚动到顶部。 这不应该这样做。

是否可以防止内置功能?

我知道其中一个选项如下。

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

但是有效吗?

回答

4

您可以在窗口中添加一个非常小的UIScrollView。然后点击状态栏不会将Web视图滚动到顶部。

1

一个更直接的方法是将UIScrollViewscrollsToTop属性设置为WebView为NO。

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

我已经在iOS 4.0和4.3(iOS 5似乎不需要这个)测试过了。

改编自this