隐藏/禁用NSComboBox按钮

时间:2011-12-09 03:43:13

标签: macos cocoa appkit nscombobox

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

如果我无法隐藏它,我至少可以禁用它吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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