2016-04-25 3 views
0

Я разрабатываю пример приложения для OSX. Я хочу текстовую область, где пользователь может вводить и редактировать текст. Я хочу, чтобы область текста увеличивалась по мере увеличения количества символов, и я хочу сделать прокручиваемую область текста и сохранить ее высоту после того, как она вырастет за определенную длину. Для этого я использую NSTextField. Но я не могу сделать это прокручиваемым. Также я попытался использовать прокручиваемый NSTextView внутри scrollview для этой цели. NSTextField не позволяет мне устанавливать шрифт и размер шрифта через построитель интерфейса.Сделать NSTextField прокручиваемым

+0

NSTextField не должен прокручиваться (как вы обнаружили). Это только для одной строки. NSTextView - это правильное представление о том, чего вы пытаетесь достичь. Вы не говорите, что NSTextView не работает для вас. Не могли бы вы быть более конкретными - и, возможно, опубликовать какой-то код, чтобы мы могли видеть, что вы делаете? – headbanger

+0

@headbanger В принципе, я хочу, чтобы NSTextView увеличивался по мере увеличения текста, но только до некоторой высоты. После этого я хочу прокрутить. Как я могу это достичь? В любом случае я могу рассчитать высоту, требуемую NSTextView во время выполнения? – hcnimkar

ответ

0

Во-первых, как вы определили, вам нужно рассчитать высоту текста. Яблоко инструкции вам нужно здесь: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html

Затем вам нужно изменить рамку или ограничения (если вы используете автоматическую раскладку) в NSTextView регулировать размер до заранее определенного максимума.

Если бы я был вами, я бы подкласса NSTextView, а затем переопределял keyDown: так, чтобы размер пересчитывался всякий раз, когда текст был изменен. Да, это может быть не самое эффективное решение, но у вас есть возможность сэкономить, и это неплохое решение.

Что касается установки шрифта, вам необходимо установить шрифт в textstorage - а не на просмотр. Вот как это делается:

[textview.textStorage setFont:[NSFont fontWithName:@"Helvetica" size:12]]; 

Если это не сработает для вас, можете ли вы опубликовать код, который не работает?

+0

Да Спасибо :) Я сделаю это – hcnimkar

+0

Я не могу изменить шрифт для NSTextView хотя – hcnimkar

+0

Вместо подкласса NSTextView я бы использовал делегат и реализовал 'textDidChange:'. NSTextView растет, когда текст изменяется. Вы должны изменить размер прокрутки. – Willeke

Смежные вопросы