这里的问题是 NSTextView 有一个默认的 NSMutableParagraphStyle 对象,它有一个属性列表,例如换行、制表位、边距等...您可以通过转到“格式”菜单、文本子视图并选择“显示标尺”菜单。(您可以使用任何 NSTextView 免费获得此菜单)。
显示标尺后,您将看到所有制表位,这将解释为什么您的制表位在到达最后一个制表位时会换行。
因此,您需要的解决方案是为段落样式对象创建一组您想要的选项卡,然后将其设置为 NSTextView 的样式。
这是一种创建选项卡的方法。在此示例中,它将创建 5 个左对齐的标签,每个标签相距 1.5 英寸:
-(NSMutableAttributedString *) textViewTabFormatter:(NSString *)aString
{
float columnWidthInInches = 1.5f;
float pointsPerInch = 72.0f;
NSMutableArray * tabArray = [NSMutableArray arrayWithCapacity:5];
for(NSInteger tabCounter = 0; tabCounter < 5; tabCounter++)
{
NSTextTab * aTab = [[NSTextTab alloc] initWithType:NSLeftTabStopType location:(tabCounter * columnWidthInInches * pointsPerInch)];
[tabArray addObject:aTab];
}
NSMutableParagraphStyle * aMutableParagraphStyle = [[NSParagraphStyle defaultParagraphStyle]mutableCopy];
[aMutableParagraphStyle setTabStops:tabArray];
NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:aString];
[attributedString addAttribute:NSParagraphStyleAttributeName value:aMutableParagraphStyle range:NSMakeRange(0,[aString length])];
return attributedString;
}
然后在将任何文本添加到 NSTextView 之前调用它,以便设置带有这些制表位的默认段落样式:
[[mainTextView textStorage] setAttributedString:[self textViewTabFormatter:@" "]];
如果您想要更深入的教程,可以在此处找到其他信息:
http://www.mactech.com/articles/mactech/Vol.19/19.08/NSParagraphStyle/index.html