Изменение размера NSTextView

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

Кажется, есть много людей, желающих этого, но я не нашел полной реализации этого.

Идея состоит в том, чтобы взять размер содержимого NSTextView и измените его размер так, чтобы он соответствовал. Я просто не могу понять, как установить размер макета NSTextView, Кажется, это не frame который должен быть установлен и который можно ожидать.

Может кто-нибудь, пожалуйста, скажите мне, как установить рамку NSTextView?

1 ответ

Решение

Оказывается, что высота представления прокрутки должна быть изменена. Изменение высоты NSTextView может быть сделано путем перезаписи -didChangeText метод как ниже.

- (void)didChangeText
{
    NSScrollView *scrollView = (NSScrollView *) self.superview.superview;
    NSRect frame = scrollView.frame;

    // Calculate height
    NSUInteger numberOfLines = [self numberOfLines];
    NSUInteger height = frame.size.height;
    if (numberOfLines <= 13)
    {
        height = 22 + (numberOfLines - 1) * 14;
        if (height < 22)
            height = 22;
    }

    // Update height
    frame.size.height = height;
    self.superview.superview.frame = frame;
}

Поиграйте с константами, чтобы получить желаемый результат.

Другие вопросы по тегам