cocoa - 将 NSTextView 滚动到精确的矩形?

标签 cocoa nstextview nsscrollview

我有一个 NSTextView,位于 NSScrollView 内,我想在用新数据重新填充 NSTextView 后将其滚动到原来的位置。到目前为止,我已经尝试了下面代码的变体,但它从来没有完全正确。

我需要一个 setDocumentVisibleRect 方法,但没有。

NSRect oldVisibleRect = [[[self scrollView] contentView] documentVisibleRect];

[重新填充数据的代码]

[[[self scrollView] contentView] scrollToPoint:newPoint];

有什么想法吗?

最佳答案

您需要更具体 - 这不是“完全正确”吗?

-[NSView scrollRectToVisible:]

Scrolls the receiver’s closest ancestor NSClipView object the minimum distance needed so a specified region of the receiver becomes visible in the clip view.

NSTextView 是 NSView 的子类(尽管您应该始终考虑给定 View 是否翻转了坐标...),因此您可以使用 -scrollRectToVisible:

此外,除非您的 TextView 内容更改与以前几乎完全相同,否则旧的可见矩形不会完全相同,因此我不希望它表现得完美。如果您仅将属性(如语法突出显示)应用于文本,则无需对 TextView (文本存储或容器)执行任何需要完全重新加载(和重新滚动)的操作。我想这可以归结为“你到底想做什么?”

关于cocoa - 将 NSTextView 滚动到精确的矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1804205/

相关文章:

macos - 我点击 "show tab bar"时没有加号按钮

cocoa - 单击 NSTableCellView 内的 NSTextView 时如何选择 NSTableView 中的行?

cocoa - NSTextView 在打字时挂起

cocoa - 使用 NSTextView 对象打开/编辑位于应用程序包中的 .txt 文件

cocoa - NSScrollview 内的 NSView 不会改变大小

swift - 以编程方式滚动到 NSScrollView 末尾时出现问题

java - 如何在 XCode 中从 "Java JNI Application"模板开始使用 Objective-C?

cocoa - 无法指定 CTLineDraw 的填充样式

cocoa - Xcode 适合哪种单片机系统?

objective-c - 在标准 NSWindow 上创建自定义标题栏