【发布时间】:2013-06-30 14:32:12
【问题描述】:
这个问题最好用一张或三张截图来解释!
不知何故,我有一个 UIWebView 没有完全呈现其内容......或者是这样吗?我当然可以点击并选择 webView 中的文本,即使我看不到它!这是怎么回事?
需要明确的是,只有在我在 webView 中显示内容时有时才会发生这种情况。它是随机的,不容易重现。
我有一个 UIPageViewController,每个“页面”视图控制器都有一个 UIWebView。为了填充内容,我注入了 HTML,当 webViewDidFinishLoading: 返回时,我运行了一个 JS 函数,该函数进行了一些修改并完成了填充。 (为了跨平台能力,在 JS 中进行了修改。)
它的设置方式是,您可以点击 HTML 中的链接,然后在 PageViewController 中创建一个新页面,然后对其进行动画处理,并将新内容加载到这个新页面中。想想“字典应用程序”。
但正如我所说,我随机得到这种现象,其中内容肯定存在并且可触摸,但不可见。
这里还有更多revealing 截图:
您可以看到,扁平化的 UIWebView 看起来与 iPad 设备屏幕截图一样。但是,如果我进入树并分解 UIWebBrowserView(UIWebView 中的 UIScrollView 的内容视图),您可以看到整个 HTML 页面!
我对绘图视图的内部工作原理不够熟悉,无法隔离并解决此问题,因此我将不胜感激。
附:一个可能相关的事情是我在我的 UIPageViewController 上调用了setViewControllers:animated:,它创建了新的 UIWebView 并启动了加载过程,然后在该调用的 completion: 块中,我称之为 再次但没有动画,以欺骗 UIPageViewController 使其“丢失”并在用户下次尝试平移时强制它重新查询数据源。有关详细信息,请参阅this post。无论如何,可能不相关,但不得不提及。
【问题讨论】:
-
我的想法是,Web 视图有某种智能代码,只为屏幕上的内容呈现 HTML(也许它只在内存不足的情况下这样做,因为它会影响滚动体验?)。所以问题可能是它认为框架比实际小。也许它有一个小框架,
clipsToBounds设置为 NO。您可以发布任何与设置视图和网络视图的框架、边界和clipsToBounds相关的代码吗? -
您是否调查过是否可能是时间问题?当在这里和那里添加延迟时,我已经看到这样的错误消失了。然后我不会使用延迟来解决任何问题,但它可能有助于追查问题的根源(例如,带有“trick”部分的“PS”听起来很可疑)
-
如果你不在 webViewDidFinishLoad 中运行你的 JS 会发生什么?你看到同样的问题发生了吗?
-
这个问题你解决了吗?
-
@brush51 不知怎的,我确实解决了这个问题。我不记得曾经找出导致它的原因,但我认为我从不同的角度解决了这个问题,也许重新设计了我的架构以及我同时将 webview 加载到其他事物的方式。抱歉,我无法提供更多帮助。
标签: ios uiview uiwebview load draw