2011-12-09 49 views
3

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

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

+0

我发布了一个解决方法,可能适合你。在我的应用程序中,我仍然希望能够隐藏它,所以我很乐意听到其他答案。 – paulmelnikow

回答

0

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

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

它使点击没有效果,但它不隐藏按钮或将其作为禁用。

+0

不是真的 - 点击按钮组合框仍然会显示一个空的列表框。 – adib

0

我不认为这是可能的。一个没有按钮的NSComboBox实际上是一个NSTextField,所以我猜这是不必要的。你可以通过继承NSComboBoxCell并重写-drawWithFrame:inView:或-drawInteriorWithFrame:inView:来完成此操作。

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