2013-11-15 36 views
3

因爲小牛我在我的應用程序中有以下問題:我以編程方式創建一個窗口大小的NSBox。然後我將它作爲子視圖添加到Windows contentView。所以我想覆蓋視圖上的所有界面元素。自從Mountain Lion以來,這一切都很完美,在小牛NSScrollView不會覆蓋。NSScrollView覆蓋小牛

也許你可以在類似蘋果的例子中看到它。 https://developer.apple.com/library/mac/samplecode/OverlayView/Introduction/Intro.html

解決方法的任何提示?這似乎是一個錯誤,但我沒有Apple Dev帳戶提交錯誤。

+0

爲什麼不創建一個免費的Apple開發人員帳戶並提交錯誤? – user1118321

+0

我以爲你需要爲此付費的Mac OS Developer帳戶?順便說一句,通過事件解決了問題(解決方案如下!) – Lupurus

回答

2

我想一個更好的解決辦法是執行

- (BOOL)wantsLayer

,並返回NO。

Apple在10.9中顯然已經改變了NSScrollView,所以它在圖層中繪製 - 對於特殊的滾動效果或速度,或者可能只是爲了給我們做些事情,因爲我們都工作不足。這會影響NSTextViews,NSTableViews和PDFViews等等。我已經看到很多情況(例如,我的應用的主要文檔視圖),在這種情況下很好,但在某些情況下,它可怕地混亂。兩個示例:在更改窗格時調整大小的「首選項」面板的動畫淡入/淡出,以及包含可以摺疊的部分的詳細視圖。在後一種情況下,如果您在10.9的表格視圖VANISHES中單擊表格視圖,則如果您打開摺疊的部分,它將重新出現UPSIDE DOWN。

通過拒絕使用上面提到的圖層,您會拒絕參與這種瘋狂行爲,並迫使滾動視圖繪製舊的方式。

+0

謝謝!現在我也有一個完美的解釋。 – Lupurus

-1

哈哈,發現巧合的解決方案(我甚至不知道,爲什麼它的工作^^)。我創建NSScrollView的一個子類,並將此:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { 
    return; 
} 
+0

愚蠢的破解 - 請參閱Radu的正確方法 – ATV

2

afaik,疊加兄弟視圖僅支持層支持視圖。不建議使用互不覆蓋的非層次視圖。對於某些osx版本,這種情況不能保證正確繪製。這裏最好的長期解決方案是使您的覆蓋視圖,圖層支持的視圖

+1

好點 - 爲覆蓋視圖啓用'wantsLayer'對我來說工作得很好。乾杯! – Jay