2011-12-14 20 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