Swift/OSX - отключение кольца фокусировки на настроенном NSSecureTextField
Я пробую некоторые стили 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, но результат странный. Кольцо фокусировки видно, хотя я установил его на НЕТ.
Исходный код NSSecureTextFieldCell такой же, как и приведенный выше (конечно, с той разницей, что я подклассифицировал NSSecureTextFieldCell, а не NSTextFieldCell), но почему он не показывает линию внизу ячейки? И почему я получаю проклятое кольцо фокуса, когда я назначаю свой CustomCell-класс ячейке? Я просто не понимаю этого, и это сводит меня с ума.
2 ответа
Вы можете использовать следующий код, чтобы удалить кольцо фокусировки в viewDidLoad
self.SecuredTextField.focusRingType = NSFocusRingType.None
У меня была такая же проблема, и я решил ее с помощью стандартного NSTextField
с NSSecureTextFieldCell
подкласс как его класс ячейки.