0

我创建了一个UIWebView被调用的实例myWebView。我填充myWebView了来自 loadHTMLString 的内容,添加了几个 UIImageViews 和 UIViews。它按预期工作:UIImageViews 和 UIViews 都位于来自 html 字符串的 webview 内容之上。

myWebView 然后我使用NSKeyedArchiverand归档和取消归档NSKeyedUnarchiver。取消归档后,只有 html 字符串内容可见。所有其他 UIViews 和 UIImageViews 被移到后面。所以它们是不可见的。归档前和取消归档后的 NSLogmyWebView.subviews显示,_UIWebViewScrollView 已从子视图中的第一个对象移动到最后一个对象。请注意,仅更改了 _UIWebViewScrollView 顺序。

不确定这是否是 SDK 设计的,但为了恢复视图顺序并使它们正常可见,我这样做了:

[myWebView sendSubviewToBack:[myWebView.subviews lastObject]];

问题:这样做是否会违反 Apple 的任何规则,因为我不确定 _UIWebViewScrollView 是否被视为 Apple 的私人物品。但是因为我没有碰那个_UIWebViewScrollView。

4

1 回答 1

0

好吧,就规则而言,你很好。

但是:由于UIWebViewScrollView是 的内部成员UIWebView,如果他们UIWebView在不同的 iOS 版本中更改工作方式,您的代码可能会搞砸。

为了更安全一点,您应该尝试在您添加的每个子视图上设置标签,然后执行以下操作:

[myWebView bringSubviewToFront:[myWebView viewWithTag:100]];
[myWebView bringSubviewToFront:[myWebView viewWithTag:101]];
[myWebView bringSubviewToFront:[myWebView viewWithTag:102]];
... etc (remember to use the tags that you used for your subviews)

另一方面,弄乱UIWebView可能会导致以后出现麻烦,可能还有其他方法可以完成您想要做的事情,风险较小的方法

于 2013-02-14T19:28:44.160 回答