NSControl不适用于不同的Mac

时间:2013-07-02 19:54:26

标签: interface-builder nswindow nscombobox nscontrol nscolorwell

我遇到了一个我自己无法解决的奇怪问题。我在NSWindow中嵌入了几个嵌入NSBorderlessWindowMask的UI元素。有2 NSSlider,3 NSButtonNSComboBoxNSColorWell

应用程序为目标10.7构建并启用了沙盒。

在我的开发机器上,每个元素都按预期工作。 NSComboBoxDataSourceDelegateNSColorWell也有效。当我点击NSComboBox时,我可以在其中输入文字。 NSColorWell会打开颜色选择。

当我将我的应用程序交给我的测试版测试人员时,无法编辑NSComboBoxNSColorWell。这意味着,我可以将元素添加到DataSource的{​​{1}}(通过导入),并且可以在下拉菜单中选择它们,但我无法点击NSComboBox并写一个文字。单击NSComboBoxCell时,也不会打开颜色选择。

我根本不知道可能导致这种行为的原因。每个元素都正确连接,我运行与我的beta-tester相同的二进制文件。这些系统都以最新版本运行Mountain Lion。我尝试为beta-tester创建NSColorWell,在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];

有效。但是我希望从删除标题栏中看到一个漂亮的外观,所以它只会有所帮助。

1 个答案:

答案 0 :(得分:0)

正如我已编辑到我的问题中,我发现此问题是由我的主NSBorderlessWindowMask上的NSWindow样式引起的。除了继承NSWindow之外,我找不到别的方法。

我使用this example作为指南。如果您只是从项目中提取CustomWindow类并将其添加到项目中,它也可以工作。然后,只需将IB中的窗口类设置为CustomWindow

我仍然不知道是什么原因引起了这个问题。如果有人有想法,请随时留下另一个答案。