3

我正在尝试实现一个NSTextView调整大小以适应其内容的方法。我正在尝试使它具有最大的行数。意思是,当达到这个限制时,它不会进一步增长,用户将能够滚动它。

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

这个想法是获取内容的大小NSTextView并调整它的大小以使其匹配。我只是不知道如何设置NSTextView. 它似乎不是frame需要设置的,也不是人们可能期望的。

谁能告诉我如何设置框架NSTextView

4

1 回答 1

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;
}

使用常量来获得你想要的结果。

于 2012-06-25T20:41:47.533 回答