gpt4 book ai didi

ios - WKWebView 内部 UIScrollView : Scrolling Conflict

转载 作者:可可西里 更新时间:2023-11-01 04:55:53 46 4
gpt4 key购买 nike

上下文

我有一个 WKWebView,它以编程方式嵌入到 UIView 中,而这个 UIView 嵌入到 UIScrollView 中.

可视化:

Scene's View Hierarchy

这是我所做的简化版本:

UIScrollView
|
+---- UIView
| |
| +-- UIButton
| |
| +-- UILabel
|
+---- UIView
|
+-- WKWebView

我不想让 WKWebView 滚动,我通过在页面上注入(inject)以下脚本来禁用它。

document.ontouchmove = function(event) { event.preventDefault(); }



问题

目前,当我在 WKWebView 中点击时,滚动不起作用。但是,一旦我在上面的 UIView 中点击返回,我就可以再次滚动。我在下面附上了发生的事情的 GIF。红色部分是WKWebView,绿色部分是UIView


Scrolling problem



我做了什么

  1. 我已经使用 scrollEnabled 禁用了滚动,但它不起作用,因为我仍然可以滚动 WKWebview

    webView.scrollView.scrollEnabled = false
    webView.scrollView.bounces = false
  2. 加载网页后注入(inject)以下 javascript(当前解决方案)

    document.ontouchmove = function(event) { event.preventDefault(); }
  3. 为 View 使用静态UITableViewController,但我仍然遇到同样的问题。


引用资料:

最佳答案

我遇到过同样的问题。我的解决方法是像这样在 ScrollView 上设置内容插入:

scrollView.contentInset = UIEdgeInsetsMake(FLT_EPSILON, FLT_EPSILON, FLT_EPSILON, FLT_EPSILON);

看起来 WKWebview 中有一些优化可以防止父级 scrollView 在其尺寸适合 scrollview 尺寸时接收手势。即使使用 FLT_EPSILON 的大小设置 insets 也会使 WkWebView 通过手势。

它仅适用于 UIScrollView 内的 WKWebView。如果在其他 UIScrollView 中有 UIScrollView,则不需要此解决方法。

关于ios - WKWebView 内部 UIScrollView : Scrolling Conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39844452/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com