尝试将文本字段添加到nsmenuitem中,但不会显示

时间:2019-04-26 05:36:10

标签: swift macos cocoa

这是我用来尝试将文本字段添加到nsmenuitem中的代码

class menuitemtest1: NSTextField {
  var menuitemtest1 = NSTextField()
  override func viewDidChangeBackingProperties() {
    menuitemtest1.frame = CGRect(x: 220, y: 8, width: 103, height: 17)
    menuitemtest1.stringValue = "Maximum Lenght"
    menuitemtest1.isEditable = false
    menuitemtest1.textColor = .gray
    menuitemtest1.isSelectable = false
    menuitemtest1.drawsBackground = false
 }
}

多数民众赞成在类 以及我如何添加它

    var textFieldInMenutest = NSMenuItem()
    menuBarMenu.addItem(textFieldInMenutest)
    textFieldInMenutest.view = menuitemtest1()

1 个答案:

答案 0 :(得分:1)

您创建了一个NSTextField子类,该子类具有一个单独的直接NSTextField实例作为属性。这是没有道理的。您打算要做的是这样:

class menuitemtest1: NSTextField {
  override func viewDidChangeBackingProperties() {
    self.frame = CGRect(x: 220, y: 8, width: 103, height: 17)
    self.stringValue = "Maximum Lenght"
    self.isEditable = false
    self.textColor = .gray
    self.isSelectable = false
    self.drawsBackground = false
 }
}

关于它为什么“不显示”的原因-您在菜单项视图中添加的文本字段的尺寸为零(默认),因此它根本是不可见的。

此外,viewDidChangeBackingProperties不是设置字段基本属性的正确位置。在这样的子类中,应使用 initializer init(frame:...init(coder: ...