Cocoa: Как создать многострочный NSTextField?

Как создать многострочный NSTextField? ОБНОВЛЕНИЕ: Я нашел в специальном типе NSTextField IB под названием "Wrapped Text Field". Он многострочный, но когда я хочу получить новую строку, мне нужно нажать Ctrl + Enter. Но я хочу нажать только Enter, чтобы получить новую строку. Как я могу это сделать?

Ответ 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];