2012-04-19 48 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'方法中写入你所需的更改。希望这可以帮助那些在自定义类中发生这种崩溃的人。

相关问题