0

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

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

在我的开发机器上,每个元素都按预期工作。有NSComboBox一个工作DataSourceDelegate. NSColorWell也确实有效。当我单击 时NSComboBox,我可以在其中输入文本。并NSColorWell打开颜色选择。

当我将我的应用程序交给我的 beta 测试人员时,NSComboBoxNSColorWell无法编辑。这意味着,我可以将元素添加到DataSourceNSComboBox通过导入),并且可以在下拉菜单中选择它们,但我无法单击NSComboBoxCell并写入文本。当我单击NSColorWell.

我完全不知道是什么导致了这种行为。每个元素都正确连接,我运行与我的 beta 测试器相同的二进制文件。这两个系统都运行最新版本的 Mountain Lion。我尝试为 beta 测试器创建一个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];

有用。但我想从删除标题栏得到一个漂亮的外观,所以它只会有一点帮助。

4

1 回答 1

0

正如我已经编辑到我的问题中,我发现这个问题是由NSBorderlessWindowMask我的 main 样式引起的NSWindow。除了 subclassing 之外,我没有找到其他解决方法NSWindow

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

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

于 2013-07-03T16:21:15.660 回答