2011-12-14 19 views
2

我试图在OSX中制作一个简单的实用工具,它在WebView中呈现Google Map并在其上显示一些视图。对于大多数网站,包括指向maps.google.com的链接,子视图都会在WebView之上呈现。甜。但是,如果我使用Google Maps API v3,出于某种原因,地图内容将呈现在我的子视图上。在OSX上的WebView中显示的Google地图上绘制子视图

下面是一个例子:

我有两个子视图,网页视图,和NSButton的窗口。顺序是这样的,按钮应该在最上面。我将按钮的一半放在WebView上,以使示例更清晰。

如果我加载了

maps.google.com/maps?q=-33.86818,+151.1963 

...按钮出现在视图的顶部:

http://dl.dropbox.com/u/22329586/1_webviewproblem_works.png

但如果我加载了这个谷歌演示

gmaps-samples-v3.googlecode.com/svn/trunk/draggable-directions/draggable-directions.html 

...它使用Google Map API v3渲染整个内容:

http://dl.dropbox.com/u/22329586/2_webviewproblem_doesnt_work.png

(对不起,我没有足够的声誉点张贴图片在线)

任何想法?

回答

3

尝试在视图和超级视图上设置[view setWantsLayer:YES]。 它可能有帮助。

一张小纸条,为什么帮助:

可可文档说:

由于性能原因,可可并没有强制中同级 观点或保证正确的失效和图纸的行为,当 同胞的意见剪辑交叠。如果您希望在 前面绘制视图,则应该使前视图成为后视图的子视图(或后代) 。

如果使用NSViews无层后盾启用setWantsLayer:YES,和一个视图偶尔层背衬或层托管或OpenGL视图,它会被绘制在所有其他人。

但是当您在视图中启用图层后备时,它们全部都在支持重叠的CALayer层次结构中绘制。

+0

是的!这工作。如果我按照[_webView setWantsLayer:YES];`接着按[[_button setWantsLayer:YES];`,按顺序,按钮出现在顶部。谢谢! – 2011-12-15 20:44:51