我尝试了一些NSTextFields的样式来获得像Material Design那样的单行文本字段。使用正常的NSTextFields我没有问题,它运行得很好。我正在对NSTextFieldCell进行子类化并绘制我的自定义单元格(底部只有1px边框)。
代码是这样的:
override func drawWithFrame(cellFrame: NSRect, inView controlView: NSView) {
//let path:NSBezierPath = NSBezierPath.init(rect: cellFrame)
//path.fill()
var customRect = cellFrame
customRect.origin.y = cellFrame.size.height - 1
customRect.origin.x = 0;
let usedColor:NSColor = NSColor.grayColor()
usedColor.setFill()
let path = NSBezierPath.init(rect: customRect)
path.fill()
super.drawWithFrame(cellFrame, inView: controlView);
}

我在界面构建器中添加子类并将其分配给我的TextField(Cell)。一切正常的文本字段都可以正常工作。
但现在我想对NSSecureTextFields做同样的事情,但结果很奇怪。 即使我将焦点设置为NONE,也可以看到对焦环。
NSSecureTextFieldCell的源代码与上面的代码相同(当然,我的子类是NSSecureTextFieldCell而不是NSTextFieldCell),但是为什么它没有显示单元格底部的行?当我将CustomCell-Class分配给Cell时,为什么我会得到该死的聚焦环?我只是不理解它,这让我疯了。
答案 0 :(得分:0)
您可以使用以下代码删除viewDidLoad中的聚焦环
self.SecuredTextField.focusRingType = NSFocusRingType.None
答案 1 :(得分:0)
我遇到了同样的问题,我使用标准NSTextField
并将NSSecureTextFieldCell
子类作为其单元类来解决它。