2012-03-20 67 views
1

我有一個NSView的子類,我正在處理-mouseDown:事件以獲取屏幕上點擊的位置。有了這個位置,我定義了一個要用於繪製-drawRect矩形的點:它工作正常。設置時出現問題-setWantsLayer:在Lion上

但是,當我設置wantsLayer的東西是行不通的。當我得到輸入的位置時,我看到Y軸增加了20分,我不知道發生了什麼......任何人都可以解釋嗎?我如何解決這個問題?

模擬:

我點擊座標x:100; y:100;並且drawRect在x:100上繪製矩形; y:100;沒關係,這是我想要的。

隨着setWantsLayer:YES

我點擊在座標x:100; y:100;並且drawRect在x:100上繪製矩形; y:120; (或類似的東西)

是否可能我使用CALayers沒有設置-setWantsLayer爲YES?我試圖弄清楚這一點,但我不知道發生了什麼......我需要你的幫助。

更新:我想弄明白這一點,我現在做了很多測試... 現在我可以說,問題是與-mouseDown:從NSView,當我設置-setWantsLayer到YES它不不再像預期的那樣工作了......

我在我的窗口中有一個CustomView,我創建了NSView的子類並設置爲CustomView類。 CustomView在位置(0,20)。座標方向不翻轉。我相信當我設置爲NSView的時候希望圖層-mouseDown:更新幀到位置(0,0)(換句話說,它得到NSWindow幀)而不是(0,20)。當它發生在-mouseDown的每個位置時:在Y軸上增加20個點。我不知道我說的是對的,但是我得到的結果是我的測試結果。

有人可以幫我弄清楚這一點嗎?

回答

1

現在來自(#macdev @ frenoode)的mikeash的幫助,我解決了這個問題。

問題是我是如何從-mouseDown:event轉換點返回的。我正在使用-convertPointFromBacking:並且像mikeash說的那樣:「問題在於-convertPointFromBacking:對於從locationInWindow返回的點進行轉換不正確。 「因爲locationInWindow不在'其像素對齊的後備存儲座標系中'」。

我改變了-convertPoint:fromView:like:[sender convertPoint:[mEvent locationInWindow] fromView:nil];它工作的很好!

謝謝你mikeash。

我在此發佈答案以幫助其他人解決同一問題。

相關問題