Разработвам примерно приложение за OSX. Искам текстова област, където потребителят може да въвежда и редактира текст. Искам текстовата област да нараства с увеличаването на броя на знаците и искам да направя текстовата област да може да се превърта и да запазя височината й фиксирана, след като надхвърли определена дължина. Използвам NSTextField за тази цел. Но не мога да го направя да може да се превърта. Също така се опитах да използвам превъртащ се NSTextView вътре в scrollview за тази цел. NSTextField не ми позволява да задам шрифта и размера на шрифта чрез създателя на интерфейс.
Направете NSTextField възможност за превъртане
Отговори (1)
Първо, както разбрахте, трябва да изчислите височината на текста. Apple има инструкциите, от които се нуждаете тук: 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]];
Ако това не работи за вас, можете ли да публикувате кода, който не работи?
textDidChange:
. NSTextView расте, когато текстът се промени. Трябва да преоразмерите изгледа за превъртане.
- person Willeke; 25.04.2016