为什么NSTextView在调整大小时不总是流畅地包装文本?

问题描述 投票:0回答:1

我偶然发现NSTextView中的行为似乎不是故意的,或者至少我不理解其背后的原因。

[当您在NSTextView中有大量文本并且调整控件/窗口的大小时,仅当文本滚动到顶部附近时,文字换行才流畅且立即while调整大小。如果您向下滚动文本,则不会,并且似乎不会“提交”换行,直到您松开并完成调整大小。

是否存在一些内部限制,或者这是一个错误?

该问题似乎可以重现:

macOS 10.15.4,Xcode 11.4.1

  1. 创建新的macOS App项目
  2. NSTextView放在默认生成的视图控制器上(与3:富,普通或默认值无关)并对其进行约束,以便其随窗口(顶部,底部,前导,尾随)调整大小。
  3. 运行应用程序,并将大量文本粘贴到文本视图中(例如:http://www.gutenberg.org/cache/epub/12281/pg12281.txt
  4. 滚动到NSTextView的顶部,观察文本如何换行while调整窗口大小
  5. 滚动到底部,观察它如何包装after调整窗口大小

希望那里有任何可可侦探可以对此有所启发。

macos cocoa nstextview
1个回答
0
投票

如果NSTextView包含在滚动视图中,则可能需要在调整大小时确保其布局。

- (void)windowDidResize:(NSNotification *)notification {
    [textView.layoutManager ensureLayoutForTextContainer:textView.textContainer];
    [textView setNeedsDisplay:YES];
} 
© www.soinside.com 2019 - 2024. All rights reserved.