【问题标题】:How to get proper scroll content size of UIWebView?如何获得 UIWebView 的正确滚动内容大小?
【发布时间】:2014-03-29 13:33:43
【问题描述】:

我正在尝试获取 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 内的 UIWebView 滚动内容大小 方法,以便在存在水平滚动时显示箭头图像。

1) 我尝试webView.scrollview.contentSize 来获取滚动内容大小,但即使内容大小更大,它也总是给我 webview 框架值。

2) 我试过了

CGSize contentSize = CGSizeMake([[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollWidth;"] floatValue],
                                [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"] floatValue]);

即使是上述第二种方法也没有给出正确的内容大小。

他们是获得准确的 webview 的嵌入式滚动视图的内容大小的直接或错误的方式吗?

【问题讨论】:

    标签: ios iphone objective-c uiwebview uiscrollview


    【解决方案1】:

    我猜这不是您希望的答案,但您的方法是错误的。

    - (BOOL)webView:(UIWebView *)webView should**Start**LoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    

    你看,当这个方法被调用时,它被调用是因为一个新的请求将被启动。此时,UIWebView 尚未收到您的页面,因此无法为您提供正确的 contentSize。

    【讨论】:

      【解决方案2】:

      也可以尝试使用offsetWidth/offsetHeight

      CGSize contentSize = CGSizeMake([[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetWidth;"] floatValue],
                                      [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue]);
      

      【讨论】:

      • 这对我有用,除了我必须在高度上添加大约 20 次放置才能使其正常工作。 (就我而言,我最关心的高度)。似乎不是滚动视图内容插图,因为这些似乎是 0。
      • 小心!我刚刚发现缩放比例之间的相关性。当我使用 JS 请求大小时,[scrollView setZoomScale:scale animated:YES]; 不再起作用,无论调用顺序如何。
      【解决方案3】:

      查看我不久前写的这篇博文,当时我不得不做类似的事情: http://www.pixeldock.com/blog/set-the-height-of-a-uiwebview-to-the-height-of-its-html-content/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-30
        • 2015-03-07
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        • 2019-09-17
        相关资源
        最近更新 更多