objective-c - 自动滚动到 NSTextView 的末尾

标签 objective-c macos cocoa nstextview

我有一个 NSTextView,我正在其上附加控制台日志。我已经在带有 ScrollView 的 XIB 文件中实现了这个 UI。当我的应用程序在 TextView 中附加控制台日志时,我希望滚动条自动转到 TextView 的末尾。我在 XIB 编辑器中找不到任何属性。知道如何实现这一目标吗?

@property(nonatomic, strong) IBOutlet NSTextView *logTextView;

    [[self.logTextView textStorage] beginEditing];
    [[[self.logTextView textStorage] mutableString] appendString:iData];
    [[[self.logTextView textStorage] mutableString] appendString:@"\n"];
    [[self.logTextView textStorage] endEditing];

最佳答案

您可以在附加字符串后使用 -[NSText scrollRangeToVisible:] 来实现您的目标。 (NSTextViewNSText 的子类。)

抱歉,但这是唯一的方法。正如您所观察到的,没有 IB 复选框会影响此特定行为。

毫无疑问,您可以将两个 -[NSMutableStringappendString:] 调用替换为一个 -[NSMutableStringappendFormat:] 调用。

关于objective-c - 自动滚动到 NSTextView 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452110/

相关文章:

objective-c - 将自定义 NSControl 和 NSCell 添加到 xib

objective-c - 仅具有 NSSavePanel 的 Cocoa 应用程序

ios - UITableView 自定义单元格 IBOutlets 为零

macos - Xamarin Macintosh 客户 URL 协议(protocol)句柄传递的参数

windows - OSX 和 Windows 上的文本之间存在 1 像素垂直差异

macos - 如何在 MAC 上为 Up 创建 ~/.aws/credentials 文件

ios - 无法在 Storyboard上的 SWRevealViewController 中设置委托(delegate)

ios - NSOperation & NSOperationQueue 取消

objective-c - 有没有一种简单的方法可以将 NSString 拆分为字符数组?

objective-c - 将 NSArray 实例共享给 KVO 对象