0

UIWebViewというインスタンスを作成しましたmyWebView。loadHTMLStringmyWebViewからコンテンツを取り込み、いくつかの UIImageView と UIView を追加しました。期待どおりに機能しました。UIImageViews と UIViews はすべて、html 文字列からの webview のコンテンツの上にあります。

次に、 andmyWebView を使用してアーカイブおよびアーカイブ解除しました。アーカイブを解除すると、html 文字列のコンテンツのみが表示されます。他のすべての UIViews と UIImageViews は背面に移動されました。したがって、それらは表示されません。アーカイブ前とアーカイブ解除後の NSLog は、_UIWebViewScrollView がサブビューの最初のオブジェクトから最後のオブジェクトに移動したことを示していました。_UIWebViewScrollView の順序のみが変更されていることに注意してください。NSKeyedArchiverNSKeyedUnarchivermyWebView.subviews

SDK の設計によるものかどうかはわかりませんが、ビューの順序を復元して通常どおり表示できるようにするために、次のようにしました。

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

質問: _UIWebViewScrollView が Apple のプライベートなものと見なされる場合はどうなるかわからないため、これを行うことは Apple の規則に違反しますか? しかし、私はその _UIWebViewScrollView に触れていないので。

4

1 に答える 1

0

まあ、ルールが続く限り、あなたは大丈夫です。

ただし、UIWebViewScrollViewは の内部メンバーであるため、別の iOS バージョンでUIWebViewの動作が変更された場合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後で問題が発生する可能性があります。あなたがやろうとしていることを達成するための他の方法、リスクの少ない方法があるかもしれません。

于 2013-02-14T19:28:44.160 に答える