在NSScrollview内的NSTextView中水平滚动文本

时间:2014-01-11 13:17:27

标签: objective-c macos cocoa

我正在使用带有嵌套NSTextView的NSScrollView,让用户在我的OSX应用程序中插入和编辑大块文本。 Application running

如果我插入一些文本,文本不会将其自身扩展到当前行,而是创建一个新行,而水平滚动条也不会展开。 我该如何解决这种情况? 感谢。

3 个答案:

答案 0 :(得分:0)

您不需要额外的滚动视图。创建所需宽度的文本容器,并将其设置为文本视图(replaceTextContainer:initWithFrame:textContainer:)。设置setWidthTracksTextView:以防止容器调整大小。

答案 1 :(得分:0)

请尝试以下代码.....

Objective-C

http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
    .antMatchers("/**").hasRole("USER").and().formLogin();

快速

[self.scrollView setHasHorizontalScroller:YES]; 
[self.textView setMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[self.textView setHorizontallyResizable:YES];
[[self.textView textContainer] setWidthTracksTextView:NO];
[[self.textView textContainer] setContainerSize:NSMakeSize(FLT_MAX, FLT_MAX)];

答案 2 :(得分:0)

这是NSTextView的扩展

extension NSTextView {
    func wrapText(_ isWrapped: Bool) {
        guard let scrollView = enclosingScrollView else { return }
        scrollView.hasHorizontalScroller = !isWrapped
        isHorizontallyResizable = !isWrapped
        let width = isWrapped ? Int(scrollView.contentSize.width) : Int.max
        maxSize = NSSize(width: width, height: Int.max)
        textContainer?.size = NSSize(width: width, height: Int.max)
        textContainer?.widthTracksTextView = isWrapped
    }
}