2010-12-20 28 views
0

我有一個NSWindow,帶有32px底部內容邊框。在窗口的視圖中,我有兩個自定義子視圖。它們中的每一個都有層支持,並且我正在用NSTrackingArea跟蹤鼠標。我正在做的一部分是使用CoreAnimation的一些mouseOver特效。這通常不是問題,但我注意到一些奇怪的東西,並想知道是否有人知道爲什麼會發生這種情況。NSWindow內容邊框與CALayer的幾何圖形混合

設置trackingArea和mouseOver方法時,我測試根層並記錄圖層名稱,以便我可以在調整窗口大小時查看各個子圖層的幾何圖形是否保持水分。在內部,他們看起來(看起來)很好。在視覺上,它們位於正確的位置,但是當我移動鼠標時,我注意到儘管鼠標實際上位於一個圖層上,hitTest正在返回它上面32像素的任何圖層。但是,如果我刪除了內容邊界,它將按照您的預期工作,並返回正確的圖層。

我明顯需要內容邊框,所以我有一個非常簡單的解決方法,它將hitTest點偏移32px。這工作正常,但似乎奇怪的是,內容邊界的存在似乎會扭曲這些子視圖的座標系統。有誰知道爲什麼會發生這種情況?

回答

1

NSEvent返回相對於窗口座標系而不是目標視圖的鼠標位置。您可能需要撥打convertRect:fromView:以獲取正確的座標。

+0

下班後我會給它一個鏡頭! – 2010-12-21 00:11:43

+0

嘿,我發現了另一個線程,展示瞭如何使用也很高興地解決這個問題的converPoint方法:http://stackoverflow.com/questions/434424/is-there-a-way-to-get-coordinates-relative -to-的最裏面,一個NSView - 當 - 的 - 價格調整匯率 – 2010-12-27 06:08:36