Редактирование текста выполняется специальным NSText
и называется «полевым редактором». Этот общий вид используется для всего редактирования текста, которое происходит в окне. Он отличается от того, что обычно отображает текст (если он не редактируется).
Вот документы:
https://developer.apple.com/documentation/appkit/nswindow/1419647-fieldeditor
Как уже упоминалось в разделе обсуждения документации, вы можете использовать и настраивать другой редактор полей. Это должно стать отправной точкой для вашей задачи.
Представитель окна может заменить пользовательский редактор полей вместо редактора полей окна, реализовав windowWillReturnFieldEditor (_: to :). Редактор настраиваемого поля может стать редактором по умолчанию (общим для всех отображающих текст объектов) или специфичным для конкретного отображаемого текста объекта (объекта).
NSControl
Документы также содержат раздел о редакторе полей, который может помочь.