Элемент управления текстового поля - это вид, в котором все чертежи выполняются с помощью NSTextFieldCell.То, что вам нужно сделать, это подкласс NSTextFieldCell и настроить чертеж.Посмотрите на API NSCell
, и вы увидите, что есть метод drawWithFrame:inView:
, который выполняет рисование всего поля.Различные другие методы NSCell используются в этом процессе.
К сожалению, некоторые из того, как рисование сделано, немного приватно и не легкомысленно, но главное - drawWithFrame:inView:
нарисует фон и затем вызоветdrawInteriorWithFrame:inView:
чтобы нарисовать текст.Вдобавок ко всему, я не могу вспомнить, использует ли NSTextFieldCell titleRectForBounds:
для определения границ текста, но я уверен, что это так.Таким образом, вы можете переопределить это, чтобы вернуть более узкий прямоугольник, оставляя место для рисования значка проверки с помощью самой ячейки или использования подпредставления.
Кроме того, вам необходимо настроить границы, в которых поле NSTextViewредактор рисует и редактирует текст, иначе, когда вы просматриваете поле, когда оно не является первым респондентом, оно будет выглядеть хорошо, но когда вы редактируете текст поля, оно будет перекрывать значок.Для этого вам может понадобиться настроить кадр, заданный на editWithFrame:inView:editor:delegate:event:
.
. Всегда немного сложно настраивать текстовые поля, потому что требуется время, чтобы найти все используемые методы и пути кода, но это сутьчто тебе нужно сделать.