Как ограничить NSTextView двумя строками?

Пытаюсь указать количество строк для NSTextView. Мой дизайнер запрашивает максимум 2 строки текста. Я пробовал стиль NSMutableParagraph, чтобы добавить усечение многоточия, которое я хочу, но с NSMutableParagraph я могу получить только NSTextView с одной строкой, а без NSMutableParagraph я получаю прокручиваемый текст с таким количеством строк, которое необходимо для завершения текста.

var attributedString = NSMutableAttributedString(string: "This is my text, I can keep going for many characters")
var para = NSMutableParagraphStyle()
para.lineBreakMode = NSLineBreakMode.ByTruncatingTail
let globalAttributes = [
  NSParagraphStyleAttributeName: para
]
let range = NSRange(location:0, length: attributedString.length)
attributedString.addAttributes(globalAttributes, range: range)
cellView.myTextView!.textStorage?.setAttributedString(attributedString)

Я пробовал ограничение высоты в NSTextView. Я пробовал:

cellView.myTextView!.textContainer?.containerSize = NSMakeSize(300, 32)

Я пробовал создать IBOutlet для NSScrollView, внутри которого находится NSTextView, и отрегулировать его высоту. Не повезло с получением двух строк и усечения. Любая помощь приветствуется. Я чувствую, что мне просто не хватает метода или настройки. Спасибо!


person myData    schedule 19.09.2015    source источник
comment
Вы рассматривали возможность использования текстового поля? Вы можете установить свойство truncatesLastVisibleLine ячейки текстового поля. Кроме того, нужно ли разрешить редактирование, но запретить пользователю вводить больше текста, чем умещается в двух строках? Установлено ли для verticallyResizable значение false для текстового представления? Вы установили maxSize?   -  person Ken Thomases    schedule 19.09.2015
comment
@KenThomases, да, я рассмотрел текстовое поле. На самом деле у меня есть NSTextField для другого свойства в этом представлении. TextField отображает только одну строку. Для textView я попытался установить для вертикалиResizable значение false и установить maxSize.   -  person myData    schedule 19.09.2015
comment
Вы можете создавать многострочные текстовые поля.   -  person Ken Thomases    schedule 19.09.2015
comment
Да, я сталкивался с этим, и это было легко в iOS, но я не нахожу подходящей процедуры для OSX.   -  person myData    schedule 19.09.2015
comment
Кроме того, эти поля не должны редактироваться пользователем, они только отображают данные, полученные из API.   -  person myData    schedule 19.09.2015
comment
Просто перетащите многострочную метку из библиотеки объектов в представление.   -  person Ken Thomases    schedule 19.09.2015
comment
Мне удалось решить программно: let cell = cellView.myLabel! .Cell () as! NSTextFieldCell cell.wraps = true cell.scrollable = false   -  person myData    schedule 19.09.2015
comment
Если вы разместите свое предложение, ответив на вопрос, а не добавив комментарий, я отмечу его как правильное. Спасибо за помощь @KenThomases   -  person myData    schedule 19.09.2015


Ответы (4)


Вы можете использовать NSTextField, настроенный как многострочную метку. Это означает, что для его свойства cell wraps установлено значение true, а для его truncatesLastVisibleLine - значение true.

person Ken Thomases    schedule 19.09.2015
comment
Кроме того, необходимо установить maximumNumberOfLines. - person Bharat Nakum; 17.07.2019

С 10.11 вы можете использовать это

yourTextViewObj.textContainer.maximumNumberOfLines = 2;
person palaniraja    schedule 27.02.2017

Для NSTextField (он же метка) вы можете просто сделать self.textField.maximumNumberOfLines = 2;

Вот и все.

person coolcool1994    schedule 02.01.2018
comment
Кроме того, необходимо свойство wraps для ячейки. - person Bharat Nakum; 17.07.2019

Максимальное количество строк теперь является свойством NSTextField

label.maximumNumberOfLines = 1;
person Cliff Ribaudo    schedule 15.05.2020