使NSTextField可滚动

时间:2016-04-25 09:56:35

标签: macos cocoa appkit

我正在为OSX开发一个示例应用程序。我想要一个用户可以输入和编辑文本的文本区域。我希望文本区域随着字符数量的增加而增长,我想让文本区域可滚动,并在它增长超过一定长度后保持其高度固定。我正在使用NSTextField来实现此目的。但我无法使其可滚动。此外,我尝试在scrollview中使用可滚动的NSTextView来实现此目的。 NSTextField不允许我通过“接口”构建器设置字体和字体大小。

1 个答案:

答案 0 :(得分:0)

首先,正如您所确定的,您需要计算文本的高度。 Apple在此提供您需要的说明: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html

然后,您需要更改NSTextView的框架或约束(如果您使用的是自动布局),以将大小调整为预定义的最大值。

如果我是你,我会继承NSTextView,然后覆盖keyDown:这样只要文本发生变化,就会重新计算大小。是的,它可能不是最有效的解决方案 - 但你有足够的力量,这是一个很好的简单修复。

至于设置字体,您需要在textstorage上设置字体 - 而不是在视图上。这是怎么做的:

{{1}}

如果这对你不起作用,你可以发布不起作用的代码吗?