【问题标题】:How to Find All CALayers assoicated with an nsview?如何查找与 nsview 关联的所有 CALayer?
【发布时间】:2011-10-25 07:26:43
【问题描述】:

我在 Mac OSX 10.7 Lion 中托管 Apple 的 Pitch Shift Audio Unit 插件。 pitchShiftView 由 CALayers 组成:每个旋钮一个等。

使用我认为是 CALayer 的旋钮更改参数值时会出现值栏,但它们不会显示在 CALayer 层次结构中。当它们应该消失时,它们会留在屏幕上,并最终导致我的应用程序因退出错误访问而崩溃。

我如何获得对这些层的访问权限,或者为什么它们不与层层次结构的其余部分相关联?

【问题讨论】:

    标签: objective-c core-animation osx-lion audiounit


    【解决方案1】:

    它们实际上可能不是层,或者至少不是当前NSView 中的层。它们可能是 NSView 的子视图,或者它们甚至可能是悬停在相关 NSView 顶部的 NSView。几乎一切皆有可能。

    您想要的第一个工具是 Accessibility Inspector(在 /Developer 中)。它使您可以指向屏幕上的任何内容并找出它在可访问性层次结构中的位置,这通常与它在视图层次结构中的位置密切相关。一旦您了解了它们在视图层次结构中的位置,您就可以开始使用调试器进行挖掘,尝试了解它们在层层次结构中的位置(如果它们在层层次结构中)。请记住,在 Mac 上,CALayerNSView 的可选补充。所以可能没有图层。

    【讨论】:

    • 非常感谢罗布。辅助功能检查器是一个很大的帮助。我以前没用过。
    • 它们原来是拥有音频单元视图的窗口的子窗口。所以你完全正确的 Rob。
    • @Rob Napier... 如果您在 CALayer 上方、下方或中间,AXInspector 会不会只是不会眨眼、搅拌、沙沙声等 ?当我刚刚尝试时,第一眼看起来就是这样……但这似乎……有点……难以想象! (坏的那种)
    • AXInspector 告诉您您所指向的可访问性对象。如果没有可访问性对象,则它不会响应。 NSViews 有默认的可访问性对象,所以你可以找到它们。 CALayers 存在于 NSViews 中。他们不会有自己的可访问性对象。你在看什么样的观点根本没有任何回应?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2016-08-30
    相关资源
    最近更新 更多