我遇到了一个非常奇怪的问题,我自己无法解决。我在作为NSBorderlessWindowMask
运行的NSWindow
中嵌入了几个UI元素。共有2个NSSlider
、3个NSButton
、一个NSComboBox
和一个NSColorWell
。
该应用程序针对目标10.7构建,并启用了沙箱。
在我的开发机器上,每个元素都按预期工作。CCD_ 7具有工作的CCD_ 8和CCD_。NSColorWell
也能工作。当我点击NSComboBox
时,我可以在其中键入文本。NSColorWell
会打开一个颜色选择。
当我把我的应用程序交给测试版的时候,NSComboBox
和NSColorWell
就无法编辑了。这意味着,我可以向NSComboBox
的DataSource
添加元素(通过导入),它们可以在下拉菜单中选择,但我不能点击NSComboBoxCell
并编写文本。单击NSColorWell
时也不会打开任何颜色选择。
我完全不知道是什么原因导致了这种行为。每个元素都连接正确,我运行与测试版相同的二进制程序。这两个系统都运行最新版本的Mountain Lion。我尝试为测试版创建一个NSButton
,它在NSComboBox
上运行以下方法:
[self.nameCB reloadData];
[self.nameCB setEnabled:YES];
[self.nameCB setEditable:YES];
[self.nameCB setNeedsDisplay:YES];
[self.nameCB setFrame:self.nameCB.frame];
[self.nameCB becomeFirstResponder];
[self.nameCB setSelectable:YES];
没有任何帮助。我不知道如何"调试"这种行为。你有什么建议吗?
编辑:我能把它分解一下。当我移除线路时
[self.window setStyleMask:NSBorderlessWindowMask];
它有效。但我想从删除标题栏中得到一个漂亮的外观,所以这只会有一点帮助。
由于我已经编辑了我的问题,我发现这个问题是由我的主NSWindow
上的NSBorderlessWindowMask
样式引起的。除了将NSWindow
子类化之外,我没有找到其他解决方法。
我用这个例子作为指导。如果您只是从项目中提取CustomWindow
类并将其添加到您的项目中,它也会起作用。然后只需将IB中窗口的类设置为CustomWindow
我仍然不知道是什么导致了这个问题。如果有人有想法,请在下面留下另一个答案。