有没有办法隐藏 NSComboBox 的弹出按钮?我在 NSComboBox 或 NSComboBoxCell 的文档中找不到任何内容。setButtonBordered:
NSComboBox 上有一个方法,但这只是更改为替换按钮样式。
如果我不能隐藏它,我至少可以禁用它吗?
有没有办法隐藏 NSComboBox 的弹出按钮?我在 NSComboBox 或 NSComboBoxCell 的文档中找不到任何内容。setButtonBordered:
NSComboBox 上有一个方法,但这只是更改为替换按钮样式。
如果我不能隐藏它,我至少可以禁用它吗?
我不认为这是可能的。没有按钮的 NSComboBox 实际上是一个 NSTextField,所以我猜它被认为是不必要的。您可能可以通过继承 NSComboBoxCell 并覆盖 -drawWithFrame:inView: 或 -drawInteriorWithFrame:inView: 来做到这一点。
最安全的方法可能是添加您自己的 buttonHidden 属性并使用 ObjC 运行时方法 class_getMethodImplementation 在 NSTextField 中查找同一方法的 IMP,并在按钮隐藏时调用它。你实际上是在调用 super 的 super,所以你会得到一个常规的文本字段外观。
如果组合框没有项目,单击弹出按钮不会执行任何操作。
当您想禁用按钮时,也许您可以通过清空列表来解决限制。
它使单击无效,但不会隐藏按钮或将其绘制为禁用状态。