NSControl无法在不同的Mac上工作



我遇到了一个非常奇怪的问题,我自己无法解决。我在作为NSBorderlessWindowMask运行的NSWindow中嵌入了几个UI元素。共有2个NSSlider、3个NSButton、一个NSComboBox和一个NSColorWell

该应用程序针对目标10.7构建,并启用了沙箱。

在我的开发机器上,每个元素都按预期工作。CCD_ 7具有工作的CCD_ 8和CCD_。NSColorWell也能工作。当我点击NSComboBox时,我可以在其中键入文本。NSColorWell会打开一个颜色选择。

当我把我的应用程序交给测试版的时候,NSComboBoxNSColorWell就无法编辑了。这意味着,我可以向NSComboBoxDataSource添加元素(通过导入),它们可以在下拉菜单中选择,但我不能点击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

我仍然不知道是什么导致了这个问题。如果有人有想法,请在下面留下另一个答案。

相关内容

  • 没有找到相关文章

最新更新