1

我正在尝试一些 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 时,为什么会得到该死的聚焦环?我只是不明白,这让我发疯。

在此处下载 Xcode 项目文件 (36 KB)

4

2 回答 2

1

您可以使用以下代码移除 viewDidLoad 中的对焦环

self.SecuredTextField.focusRingType = NSFocusRingType.None

于 2016-05-31T09:37:13.657 回答
0

我遇到了同样的问题,我通过使用NSTextField具有NSSecureTextFieldCell子类作为其单元类的标准来解决它。

于 2016-05-31T11:19:59.470 回答