代码之家  ›  专栏  ›  技术社区  ›  sagarkothari

停止在uiwebview-iphone中滚动到顶部

  •  1
  • sagarkothari  · 技术社区  · 14 年前

    我在HTML文件中放置了以下javascript。

    <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]];
    

    一切顺利,但我面临的问题如下。

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

    是否可以防止内置功能?

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

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

    但是这样做有效吗?

    2 回复  |  直到 13 年前
        1
  •  4
  •   kennytm    14 年前

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

        2
  •  1
  •   Community CDub    7 年前

    更直接的方法是设置 scrollsToTop 性质 UIScrollView WebView 到没有。

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

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

    改编自 this .