更改NSTextView的大小

时间:2012-06-25 19:49:08

标签: macos cocoa nstextview

我正在尝试实现一个NSTextView,其大小调整以适应其内容。我试图使它具有最大线数。这意味着,当达到此限制时,它将不再增长,用户将能够滚动它。

似乎有很多人想要这个,但我还没有找到完整的实现。

我们的想法是获取NSTextView的内容大小并调整其大小以使其匹配。我无法弄清楚如何设置NSTextView的布局大小。它似乎不是frame需要设置和可能期望的。

有人可以告诉我如何设置NSTextView的框架吗?

1 个答案:

答案 0 :(得分:4)

事实证明,这是应该更改的滚动视图的高度。更改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;
}

使用常数来获得您想要的结果。