11

WebViewをアプリに追加し、次のコードを使用してページをロードしています。

-(void)awakeFromNib{
    NSString *resourcesPath = [[NSBundle mainBundle] resourcePath];
    NSString *htmlPath = [resourcesPath stringByAppendingString:@"/calendarHTML/test.html"];
    [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; 
}

ただし、アプリを実行すると、次のエラーが発生します。

Layout still needs update after calling -[WebHTMLView layout].  
WebHTMLView or one of its superclasses may have overridden 
-layout without calling super. Or, something may have dirtied 
layout in the middle of updating it.  Both are programming errors in 
Cocoa Autolayout.  The former is pretty likely to arise if some 
pre-Cocoa Autolayout class had a method called layout, but it should be fixed.!

エラーログ

この問題の原因は何ですか?

4

3 に答える 3

12

これは、WebViewを配置したウィンドウを含むペン先が、Lionで導入された新しい自動レイアウト機能を使用していることが原因です。

nibファイルで自動レイアウトが有効になっている場合、ウィンドウはウィンドウ内の-layoutすべてのNSViewオブジェクトに対してメソッドを呼び出します。

これは、LionのAPIにメソッドが追加される前にWebView名前が付けられたメソッドがあり、のメソッドが自動レイアウトを理解しないため、問題が発生します。-layoutNSViewWebViewlayout

おそらく当面の最善の解決策は、ウィンドウにビューをレイアウトする古い自動サイズ変更マスク方法を使用することです。Xcodeは自動レイアウトが有効になっているnibファイルを作成するようになったため、自分で無効にする必要があります。

チェックボックスを無効にすることで、nibファイルのファイルインスペクターでこれを行うことができUse Auto Layoutます。

インターフェイスビルダーインスペクター

これを行った後、ペン先のすべてのビューがビューインスペクターの[サイズ]タブで正しい自動サイズ変更設定になっていることを確認する必要があります。

于 2012-04-19T02:18:14.967 に答える
3

WebViewのログメッセージは無視しても問題ないことに注意してください。

于 2012-05-15T20:02:38.690 に答える
0

の場合はわかりませんWebViewが、カスタムクラス(のサブクラスなどUILabel)を使用していて、メソッドを使用している場合:

- (void)updateConstraints
{

}

その後、間違いなくそれはあなたのアプリをクラッシュさせます。最善の解決策は、このメソッドを削除し、必要な変更を' awakeFromNib'メソッドに書き込むことです。これがカスタムクラスでこのクラッシュを起こしている他の誰かに役立つことを願っています。

于 2015-01-14T08:16:43.223 に答える