【问题标题】:Clicking through NSWindow/CALayer单击 NSWindow/CALayer
【发布时间】:2012-05-25 04:10:23
【问题描述】:

所以我正在解决我在尝试使用 CAKeyframeAnimation 制作一些简单动画时遇到的问题,我相信我的问题更多地与不完全理解 NSWindow、NSView 和 CALayer 如何协同工作有关。 我有两个主要问题。 MyContainerWindow(NSWindow 子类)和 MyMovableView(NSView 子类)。我的目标是能够在屏幕上来回设置 MyMovableView 动画,同时保持通过 MyContainerWindow 单击任何内容的能力,除非您单击 MyMovableView 所在的任何位置。我可以通过在 myMovableView.layer 上调用 -addAnimation:forKeyPath: 来完成第一部分,一切都很好,除了我无法单击 MyContainerWindow。我可以让窗口变小,但是动画会被窗口的边界剪掉。

要点: 1) MyContainerWindow is initWithFrame to [[NSScreen mainScreen] frame], NSBorderlessWindowMask, defer no, buffered 2) 我将WantsLayer:TRUE 设置为 MyMovableView 3) MyContainerWindow 很清晰,我希望它就像根本没有窗口一样,但需要它,所以我有一个更大的画布来制作动画。

有什么明显的东西我错过了能够点击一个 NSWindow 吗?

提前致谢!

【问题讨论】:

    标签: objective-c macos


    【解决方案1】:

    我在这种情况下的解决方案实际上是使用:

    [self ignoresMouseEvents:YES];
    

    我最初希望能够在我正在制作动画的特定 CALayer 上保留鼠标事件,但经过进一步研究,我了解到这会带来从头开始自定义绘制所有内容的成本,这并不理想特定项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多