Swift/OSX -禁用焦点环自定义NSSecureTextField



我正在尝试一些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。没有一个

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

相关内容

  • 没有找到相关文章

最新更新