Eon*_*nil 16 cocoa word-wrap nstextview
默认情况下,NSTextView执行自动换行.我怎么能禁用它?我正在制作一个JSON代码查看器,所以我必须禁用它.
Eon*_*nil 25
我从以下网站获得解决方案:http://lists.apple.com/archives/cocoa-dev/2008/May/msg02396.html
您必须将NSTextView的最大宽度设置为非常大的数字才能使其正常工作.(只需复制最大高度)并启用NSScrollView的水平滚动,这是NSTextView的超级视图.看这些图片:
http://www.flickr.com/photos/47601728@N06/4759470529/
http://www.flickr.com/photos/47601728@N06/4759470533/
我发现我的旧示例代码不足以使其完全正常工作.(因为SDK版本?)另外这是我的完整源代码片段,它禁用OSX 10.8 SDK中的自动换行.
[self setMaxSize:CGSizeMake(FLT_MAX, FLT_MAX)];
[self setHorizontallyResizable:YES];
[[self textContainer] setWidthTracksTextView:NO];
[[self textContainer] setContainerSize:CGSizeMake(FLT_MAX, FLT_MAX)];
Run Code Online (Sandbox Code Playgroud)
现在,Apple正在提供NSTextView
正确创建的官方指南.我希望这有帮助.
我在Github上发布了一个示例项目.有关具体实现,请参阅此页面:https://github.com/Eonil/CocoaProgrammaticHowtoCollection/blob/master/ComponentUsages/TextView/ExampleApplicationController.swift?ts=4
这是示例项目的代码片段.
if wordwrap {
/// Matching width is also important here.
let sz1 = scroll1.contentSize
text1.frame = CGRect(x: 0, y: 0, width: sz1.width, height: 0)
text1.textContainer!.containerSize = CGSize(width: sz1.width, height: CGFloat.max)
text1.textContainer!.widthTracksTextView = true
} else {
text1.textContainer!.widthTracksTextView = false
text1.textContainer!.containerSize = CGSize(width: CGFloat.max, height: CGFloat.max)
}
Run Code Online (Sandbox Code Playgroud)
仅Eonil接受的答案中给出的三行对我来说不起作用,结果文本视图没有水平滚动,因此无法看到长行的剪切部分.
来自引用的cocoa-dev线程的完整代码片段确实产生了正确的结果.具体来说,这一系列步骤:
NSSize layoutSize = [textView maxSize];
layoutSize.width = layoutSize.height;
[textView setMaxSize:layoutSize];
[[textView textContainer] setWidthTracksTextView:NO];
[[textView textContainer] setContainerSize:layoutSize];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8279 次 |
最近记录: |