這裏的問題是,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