滚动视图中的WKWebView

时间:2019-01-19 18:47:19

标签: ios swift webview scroll

考虑到在Web View之后必须包含其他元素,如何将WKWebView放入Scroll View。

. View ... Scroll View ....... ImageView ....... WKWebView ....... Button

See the demo image

  • 问题1:禁用WKWebView滚动
  • 问题2:设置WKWebView的完整内容高度

检查我的sample project

3 个答案:

答案 0 :(得分:3)

如果您打算在WKWebView中获取html的内容高度,以使其在UIScrollView中不可滚动,请继续阅读。

您需要(通过委托)观察webView的内容高度。我正在为您提供这些步骤,因为您完全知道自己在做什么,并且快要到了。

摆脱网络视图高度限制的影响

@IBOutlet weak var constraint_WebViewHeight: NSLayoutConstraint!

订阅webView的代表

这会让您知道(您的控制器在您的webView加载完网站内容之后。

self.webView.navigationDelegate = self

符合协议

然后在didFinish navigation的{​​{1}}方法中,调整webView高度约束的常数。如果需要,放一些动画:)

WKNavigationDelegate

最后,解决您的约束。

a。删除您的imageView底部约束。 b。将底部约束添加到滚动视图的“保存”按钮。

这将使您的scrollView可滚动。

Voila!这样就产生了结果。

enter image description here

我希望这会有所帮助!

答案 1 :(得分:0)

根据了解,如果页面大于屏幕,您希望Webview不能很好地滚动吗? 显示整个页面。尽管您可以使用界面视图的对象从界面构建器或代码中将isscrollingenabled更改为false。 要设置全高,请从各个侧面设置约束0,0,0,0,它一定会延伸到整个屏幕

答案 2 :(得分:0)

这是错误的方法。 您应该使用WKWebView的scrollView。

您需要使用javascript保留带有html边距的图像和按钮的空间

[NSString stringWithFormat:@"document.body.style.margin = '%dpx %dpx %dpx %dpx'", (int)margins.top, (int)margins.right, (int)margins.bottom, (int)margins.left]

或直接在html正文中访问(如果可以访问)。

将imageview和按钮添加到WKWebView的scrollView中。