2012-06-25 3 views
4

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

[self.titleField setTextColor:textColor]; 
[self.titleField setFont:bold14]; 

И я также использовать NSAttributedString, чтобы решить эту проблему:

NSFont *bold14 = [NSFont boldSystemFontOfSize:14.0]; 
NSColor *textColor = [NSColor redColor]; 
NSMutableParagraphStyle *textParagraph = [[NSMutableParagraphStyle alloc] init]; 
[textParagraph setLineSpacing:10.0]; 

NSDictionary *attrDic = [NSDictionary dictionaryWithObjectsAndKeys:bold14, NSFontAttributeName, textColor, NSForegroundColorAttributeName, textParagraph, NSParagraphStyleAttributeName, nil]; 
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:title attributes:attrDic]; 
[self.titleField setAllowsEditingTextAttributes:YES]; 
[self.titleField setAttributedStringValue:attrString]; 

выше код ОК, чтобы показать приписываемую строку, но когда я удалить строку в текстовом поле и начать ввод, слова приходят без какого-либо атрибута.

Как я могу ввести строку в NSTextField с пользовательским шрифтом, цветом и межстрочным интервалом?

ответ

4

Лучше всего использовать методы настройки атрибутов NSTextField's вместо NSAttributedString, потому что тогда он может отправить настройки в редактор полей. Каждое текстовое поле имеет NSTextView (большую часть времени) «Field Editor»; и редактор полей - это то, что делает редактирование.

Ваш NSAttributedString не прилипает, потому что вы только указываете текстовому полю, чтобы временно отобразить эту строку. Когда полевой редактор появляется, текстовое поле (ячейка) передает свои атрибуты, такие как textField.font и textField.textColor, но не атрибуты NSAttributedString.

Лучше всего использовать NSTextView, чтобы иметь возможность использовать -setDefaultParagraphStyle, потому что вы редактируете несколько строк в любом случае, из того, что я вижу. Если вы не можете из-за проблем с производительностью или что-то еще, то:


Подкласс NSTextFieldCell, потому что это то, что делает всю NSTextField работу, и переопределить

- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj 

(объявленный в NSCell) в настроить атрибуты для вашего редактора полей так, как вы хотите, чтобы вы могли отправить его значение высоты линии через -setDefaultParagraphStyle (и шрифт и т. д.) самостоятельно. (textObj - это редактор полей, который нужно настроить).

+0

Спасибо за ваш ответ, но я не могу найти метод setDefaultParagraphStyle в ссылке NSText –

+1

Это потому, что редактор полей действительно является «NSTextView», несмотря на возвращаемый тип 'setUpFieldEditorAttributes:' '' 'NSText'. – Monolo

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