NSWindow Content Border与CALayer的几何图形混乱

时间:2010-12-20 11:26:46

标签: cocoa nsview

我有一个带有32px底部内容边界的NSWindow。在窗口视图中,我有两个自定义子视图。它们中的每一个都是图层支持的,我用NSTrackingArea跟踪鼠标。我正在做的部分是使用CoreAnimation的一些mouseOver效果。这一般不是问题,但我注意到一些奇怪的事情,并想知道是否有人知道为什么会这样。

设置trackingArea和mouseOver方法时,我点击测试根图层并记录图层的名称,以便在调整窗口大小时可以看到各个子图层的几何图形是否有水。在内部,它们似乎(并且看起来)很好。在视觉上,它们位于正确的位置,但是当我移动鼠标时,我注意到尽管鼠标在物理上位于一个层上,但是hitTest返回的是任何高于它的图层32px。但是,如果我删除内容边框,它会按预期工作,并返回正确的图层。

我显然需要内容边框,所以我有一个非常简单的解决方法,涉及将hitTest点偏移32px。这样做很好,但内容边框的存在似乎会扭曲这些子视图的坐标系统似乎很奇怪。有谁知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

NSEvent返回相对于窗口坐标系的鼠标位置,而不是目标视图。您可能需要致电convertRect:fromView:以获取正确的坐标。