2012-04-19 52 views
11

我加了的WebView到我的應用程序,我加載一個頁面到它使用此代碼:我加了的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.! 

error log

是什麼原因造成這個問題?

回答

12

這是由包含您放入WebView的窗口的筆尖使用Lion中引入的新Auto Layout功能引起的。

當一個筆尖文件啓用自動佈局時,窗口將調用窗口中所有NSView對象上的-layout方法。

這會導致一個問題,WebView,因爲它有一個名爲之前它被添加到Lion中的NSView API的方法-layout方法,並WebViewlayout方法並不瞭解自動佈局。

暫時最好的解決方法可能是使用舊的自動調整掩碼方法來佈局窗口中的視圖。由於Xcode現在創建了啓用了自動佈局的nib文件,因此您需要自行禁用它。

通過禁用Use Auto Layout複選框,您可以在文件檢查器中爲您的筆尖文件執行此操作。

interface builder inspector

完成這一步之後,你需要確保在筆尖的所有意見必須在視圖督察大小選項卡正確的自動尺寸設置。

+0

噢,我愛你,謝謝。 – 2012-04-19 02:24:10

3

請注意,您可以安全地忽略WebView的日誌消息。

0

我不知道有關的WebView的情況下,但如果你使用任何自定義類(像的UILabel子類),你正在使用的方法:

  • (無效)updateConstraints { }

那麼肯定會崩潰你的應用程序。最好的解決方案是刪除這個方法,並在'awakeFromNib'方法中寫入你所需的更改。希望這可以幫助那些在自定義類中發生這種崩潰的人。

相關問題