我正在为OSX开发一个示例应用程序。我想要一个文本区,用户可以输入和编辑文本。我希望文本区域随着字符数的增加而增长,并希望文本区域可滚动,并在超过一定长度后保持其高度不变。为此,我使用了NSTextField。但我无法使其可滚动。此外,我还尝试在scrollview中使用scrollable NSTextView来实现此目的。NSTextField不允许我通过接口构建器设置字体和字体大小。
发布于 2016-04-25 12:19:01
首先,正如您所确定的,您需要计算文本的高度。苹果在这里提供了你需要的说明:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html
然后,您需要更改NSTextView的框架或约束(如果您使用自动布局),以将大小调整到预定义的最大值。
如果我是您,我会子类化NSTextView,然后重写keyDown:,这样每当文本发生变化时,都会重新计算大小。是的,这可能不是最有效的解决方案-但你有多余的电力,这是一个很好的简单的解决方案。
至于设置字体,您需要在文本存储上设置字体,而不是在视图上。下面是如何做的:
[textview.textStorage setFont:[NSFont fontWithName:@"Helvetica" size:12]];
如果这对你不起作用,你能发布不起作用的代码吗?
https://stackoverflow.com/questions/36837311
复制