我正在尝试一些NSTextFields的样式,以获得单行文本字段,如材料设计的。使用正常的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时,我会得到这个该死的焦点环?我就是不明白,这使我发疯。
在此下载Xcode项目文件(36kb)
您可以使用以下代码删除viewDidLoad
中的焦点环self.SecuredTextField。focusRingType = NSFocusRingType。没有一个
我有同样的问题,我通过使用标准NSTextField
与NSSecureTextFieldCell
子类作为其单元格类来解决它。