macos - 更改 NSTextView 的大小

标签 macos cocoa nstextview

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

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

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

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

最佳答案

事实证明,应该更改 ScrollView 的高度。可以通过覆盖 -didChangeText 方法来更改 NSTextView 的高度,如下所示。

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

尝试使用常量以获得您想要的结果。

关于macos - 更改 NSTextView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196307/

相关文章:

c - OpenMPI bind() 因错误地址已在使用中而失败 (48) Mac OS X

macos - 在applescript中,如何访问菜单项的键盘快捷键?

cocoa - 如何使用显式 NSLayoutManager、NSTextStorage、NSTextContainer 以编程方式设置 NSTextView?

events - NSTextView 值已更改

cocoa - NSDataDetector 识别的所有 tld 是什么?

php - 尝试了所有仍然出现 ERROR 2002 (HY000) : Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in mac 的事情

安装 OSX Yosemite 和 Xcode 6 后出现 Ruby gem 安装错误

objective-c - Storyboard崩溃 OSX

cocoa 开始表: didEndSelector throwing an error

windows - NSBitmapImageRep生成的BMP无法在Windows上读取