Я разрабатываю пример приложения для OSX. Мне нужна текстовая область, где пользователь может вводить и редактировать текст. Я хочу, чтобы текстовая область росла по мере увеличения количества символов, и я хочу сделать текстовую область прокручиваемой и сохранить фиксированную высоту после того, как она превысит определенную длину. Я использую NSTextField для этой цели. Но я не могу сделать его прокручиваемым. Также я попытался использовать прокручиваемый NSTextView внутри прокрутки для этой цели. NSTextField не позволяет мне устанавливать шрифт и размер шрифта через построитель интерфейса.
Сделать NSTextField прокручиваемым
Ответы (1)
Во-первых, как вы определили, вам нужно рассчитать высоту текста. У Apple есть необходимые инструкции здесь: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html
Затем вам нужно изменить рамку или ограничения (если вы используете автоматическую компоновку) NSTextView, чтобы настроить размер до заранее определенного максимума.
На вашем месте я бы создал подкласс NSTextView, а затем переопределил keyDown:, чтобы размер пересчитывался всякий раз, когда текст изменяется. Да, это может быть не самое эффективное решение, но у вас есть лишняя мощность, и это легко исправить.
Что касается установки шрифта, вам нужно установить шрифт в текстовом хранилище, а не в представлении. Вот как это сделать:
[textview.textStorage setFont:[NSFont fontWithName:@"Helvetica" size:12]];
Если это не работает для вас, можете ли вы опубликовать код, который не работает?
textDidChange:
. NSTextView увеличивается при изменении текста. Вы должны изменить размер прокрутки.
- person Willeke; 25.04.2016