我创建了一个名为UIWebView
的{{1}}实例。我使用loadHTMLString中的内容填充myWebView
,添加了几个UIImageViews和UIViews。它按预期工作:UIImageViews和UIViews都位于webview的html字符串内容之上。
然后,我使用myWebView
和myWebView
归档并取消归档NSKeyedArchiver
。取消存档后,只有html字符串内容可见。所有其他UIViews和UIImageViews都被移回了。所以它们不可见。存档之前和取消存档之后的NSKeyedUnarchiver
的NSLog显示,有一个_UIWebViewScrollView从子视图中的第一个对象移动到最后一个对象。请注意,只更改了_UIWebViewScrollView顺序。
不确定它是否是由SDK设计的,但要恢复视图顺序并使其正常显示,我这样做了:
myWebView.subviews
问题:这样做会违反Apple的任何规则,因为我不确定如果将_UIWebViewScrollView视为Apple的私有内容。但是因为我没有触及_UIWebViewScrollView。
答案 0 :(得分:0)
嗯,就规则而言,你很好。
但是:由于UIWebViewScrollView
是UIWebView
的内部成员,如果他们在不同的iOS版本中更改了UIWebView
的工作方式,那么您的代码可能会搞砸。
要在更安全的一面播放它,你应该尝试在你添加的每个子视图上设置标签,然后执行:
[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
可能会导致以后遇到麻烦,可能还有其他方法可以完成你想要做的事情,风险较低的方式