Как создать многострочный NSTextField? ОБНОВЛЕНИЕ: Я нашел в специальном типе NSTextField IB под названием "Wrapped Text Field". Он многострочный, но когда я хочу получить новую строку, мне нужно нажать Ctrl + Enter. Но я хочу нажать только Enter, чтобы получить новую строку. Как я могу это сделать?
Cocoa: Как создать многострочный NSTextField?
Ответ 1
Невозможно указать это поведение исключительно в Interface Builder. Вы можете сделать это с сообщением делегата, как описано в этой технической заметке QA1454.
Вот пример сообщения делегата из технической заметки:
- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector
{
BOOL result = NO;
if (commandSelector == @selector(insertNewline:))
{
// new line action:
// always insert a line-break character and don’t cause the receiver to end editing
[textView insertNewlineIgnoringFieldEditor:self];
result = YES;
}
else if (commandSelector == @selector(insertTab:))
{
// tab action:
// always insert a tab character and don’t cause the receiver to end editing
[textView insertTabIgnoringFieldEditor:self];
result = YES;
}
return result;
}
Ответ 2
Используя NSTextView
, его многострочный NSTextField
sorta, это подкласс NSText
исправить мой, если я ошибаюсь. NSTextView
имеет NSTextStorage
, который является подклассом NSAttributedString
. Вам нужно указать объект NSAttributedString
вместо NSString
, чтобы заполнить его содержимое, так как оно может отображать цвета и т.д.
[[yourTextView textStorage] setAttributedString:attrStr];