我有一个托管WebView的简单NSView。
当我尝试支持视图层时,WebView会停止呈现内容 - 它呈现的只是滚动条。
为简单起见,我将以下代码添加到全新xcode项目的app委托的applicationDidFinishLaunching方法中: -
NSView* view = [window contentView];
[view setWantsLayer:YES]; // This is the problematic line!
WebView* webView = [[WebView alloc] initWithFrame:NSMakeRect(0,0,400,400)];
WebFrame* mainFrame = [webView mainFrame];
[view addSubview:webView];
[mainFrame loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
如果我遗漏了setWantsLayered,WebKit会呈现网页。如果我设置它,WebKit只会渲染一个带滚动条的白色方块。
答案 0 :(得分:3)
不支持图层支持的WebView。从Leopard发行说明:
AppKit和Mac OS X的其他Cocoa框架提供的大多数标准视图和控件都能够在Leopard中以层支持模式运行,但某些特殊视图除外,例如WebKit WebViews和Quartz Composer QCViews,其使用目前不支持在层支持模式下。
(http://developer.apple.com/mac/library/releasenotes/cocoa/AppKitOlderNotes.html#Animation - “新视图动画设施和图层背视图”部分的最后一段)
你应该向Apple提交一个错误,并参考邮件列表http://lists.apple.com/archives/Webkitsdk-dev/2007/Dec/msg00042.html中的rdar:// 5270371。
答案 1 :(得分:1)
这现在似乎有效。 我刚刚在Mountain Lion上尝试了相同的代码,一切都很好。