2015-09-26 54 views
1

我正在尝试使用NSTextFields的某些样式来获取单行文本字段,如材料设计的样式。与正常的NSTextFields我没有问题,它运作得很好。我继承了NSTextFieldCell并绘制了我的自定义单元格(底部只有一个1px边框)。Swift/OSX - 在自定义NSSecureTextField上禁用焦点环

的代码是这样的:

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); 
 
    }

我加入了子类在界面生成器并将其分配给我的文本字段(单元)。一切工作正常与正常的文本框。

但现在我想对NSSecureTextFields做同样的事情,但结果很奇怪。 即使将其设置为“无”,对焦环仍可见。

NSSecureTextFieldCell的源代码与上面的代码相同(当然不同之处在于我划分了NSSecureTextFieldCell而不是NSTextFieldCell),但为什么它没有向我显示单元格底部的行?当我将CustomCell-Class分配给单元格时,为什么我会得到该死的聚焦环?我只是不明白它,这让我很疯狂。

Download Xcode Project File here (36 KB)

+0

我与'NSSecureTextField'有相同的问题,忽略了我在_interface builder_中设置的对焦环类型。但是,如果我在'NSSecureTextField'上设置了对焦环类型_programmatically_,那么它工作正常。 –

回答

0

您可以使用下面的代码删除对焦环在viewDidLoad中

self.SecuredTextField.focusRingType = NSFocusRingType.None

0

我有同样的问题,我要解决它使用标准NSTextFieldNSSecureTextFieldCell子类作为其单元类。