【问题标题】:UIWebView Scrolling to top when other link clicked单击其他链接时UIWebView滚动到顶部
【发布时间】:2011-10-24 18:32:30
【问题描述】:

我在加载本地内容的视图控制器中有一个 UIWebView。我正在拦截某些链接以在模式视图中加载。当单击其中一个链接并在我的 shouldStartLoadWithRequest 委托方法中返回 NO 时,当前显示的内容将滚动到顶部。我需要阻止这种情况发生。

【问题讨论】:

    标签: iphone ios ipad


    【解决方案1】:

    这不是最好的解决方案,但你可以试试这个:

    打开模态前保存:

    CGPoint Pos;
    for (UIView *subview in webView.subviews)
    {
        if ([scrollView isKindOfClass:[UIScrollView class]])
            Pos = scrollView.contentOfSet;
    }
    

    然后设置:

    for (UIView *subview in webView.subviews)
    {
        if ([scrollView isKindOfClass:[UIScrollView class]])
            [scrollView setContentOffset:Pos animated:YES];
    }
    

    【讨论】:

    • 这似乎没有帮助,而且仅在 iOS 5 中可用。问题似乎不仅仅发生在我呈现模态视图时。我在 web 视图的 shouldLoadRequest 委托方法中捕获了一个链接并返回 NO。这似乎导致 web 视图滚动到顶部。我需要它留在原地。
    • scrollsToTop 自 2.0 起可用,您可以尝试使用 setContentOffset:animated: too
    • 对不起,scrollsToTop 从 2.0 开始可用,但你只能从 5.0 访问 web 视图的 scrollView。我试图阻止网络视图向上滚动。听起来你在指示我让它滚动。基本上问题是,每当单击链接时,内容都会自动滚动到顶部。我需要让它保持在单击链接时的位置。我已经从 shouldStartLoadWithRequest 方法返回 NO,所以我不确定是什么原因导致滚动或如何停止它。我无法完全禁用滚动,因为我需要用户滚动。
    • 试试这个想法,不是最好的,但我现在想不出更好的办法
    • 事实证明,模态视图并不是问题所在。当单击主 Web 视图中的链接时,它正在执行此操作。可以忽略实际的模态视图部分,我禁用它进行测试,它仍然会发生。我之前编辑过这个问题。
    【解决方案2】:

    好的。所以问题不在于网络视图。它与 html/javascript 一起使用。我点击的链接有一个 href="#" 并在点击时调用了一个改变 document.location 的 javascript 方法。这是导致滚动的 href="#" 。我将其更改为 href="javascript: void(0);"我又回来做生意了。

    【讨论】:

    • 我有同样的问题,但我想在 UIWebview 中滚动我的内容,但它没有发生我在 iOS 11 中使用相同的内容。如何让我的内容滚动到顶部?是否有任何特定属性,我的 html 中已经有 href="#" 。你能帮我看看吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多