如何在自己的窗口中正确地托管PitchShift音频单元插件?
我正在开发一个Mac应用程序,托管苹果系统提供的音频单元插件。在新的OSX 10.7 Lion中,一些插件已经更新了视图。PitchShift就是其中之一。
PitchShift和其他一些人有了新的旋钮来更改这些参数。使用鼠标旋转旋钮时,会在旋钮下方显示一个水平条,显示该旋钮的参数值。
旋钮松开后,甚至在窗口关闭后,此条仍会留在屏幕上。如果我单击其中一个旋钮,从而创建了一个流氓值栏,并移动PitchShift视图所在的窗口,该值栏将停留在窗口原来所在的位置。如果我在这一点上再次单击旋钮,将出现一个新的条,但两个条都会使用更改的旋钮参数值信息进行主动更新。每次我重复这个过程时,屏幕上都会有更多的条。
在这种情况发生了几次之后,我的应用程序在main.m文件中的NSApplicaionMain()调用时退出,访问权限不佳。
我检查了一下逻辑9,这在那里是不会发生的。该条似乎直接绑在旋钮上,因此在您使用鼠标松开旋钮后立即消失。
我将PitchSHift视图设置为专用NSWindow的contentView。
逻辑是如何阻止这种情况发生的,或者我是如何做到的?
我试过查看参数值是否限制了PitchShift视图的子视图的位置,但似乎没有。
任何帮助都将不胜感激。
编辑:当a值栏第一次出现时,我在控制台中从我的程序中得到以下输出:圆和直线不相交
所以我发现它使用的是核心动画CALayers。现在的问题是,值栏层不是PitchShiftView的层层次结构的一部分。换句话说,我可以找到构成pitchShiftView的所有其他层,但找不到值栏的层。这似乎是一开始的全部问题。
发布于 2011-08-13 07:12:32
我终于想通了。参数值栏是拥有音频单元视图的窗口的子窗口。
为了解决这个问题,我在NSApplication的子类中捕获窗口的鼠标释放事件,然后关闭子窗口(也称为值栏),这样它们就不会停留在屏幕上。
这并没有阻止退出错误访问。我现在认为这是一个单独的问题,似乎只与这些挥之不去的子窗口有关。
https://stackoverflow.com/questions/6963223
复制相似问题