4

有没有办法隐藏 NSComboBox 的弹出按钮?我在 NSComboBox 或 NSComboBoxCell 的文档中找不到任何内容。setButtonBordered:NSComboBox 上有一个方法,但这只是更改为替换按钮样式。

如果我不能隐藏它,我至少可以禁用它吗?

4

2 回答 2

0

我不认为这是可能的。没有按钮的 NSComboBox 实际上是一个 NSTextField,所以我猜它被认为是不必要的。您可能可以通过继承 NSComboBoxCell 并覆盖 -drawWithFrame:inView: 或 -drawInteriorWithFrame:inView: 来做到这一点。

最安全的方法可能是添加您自己的 buttonHidden 属性并使用 ObjC 运行时方法 class_getMethodImplementation 在 NSTextField 中查找同一方法的 IMP,并在按钮隐藏时调用它。你实际上是在调用 super 的 super,所以你会得到一个常规的文本字段外观。

于 2012-10-17T16:49:23.340 回答
0

如果组合框没有项目,单击弹出按钮不会执行任何操作。

当您想禁用按钮时,也许您可​​以通过清空列表来解决限制。

它使单击无效,但不会隐藏按钮或将其绘制为禁用状态。

于 2012-01-20T20:09:55.893 回答