我在IB中有一個綁定到控制器的Label(NSTextField)。 控制器在awakeFromNIB上設置標籤的attributesStringValue以包含一些彩色文本和一個或兩個鏈接。NSTextField的歸因字符串在渲染中延遲
當您看到標籤時,它包含正確的字符串值,但是某些格式會丟失 - 直到您單擊標籤並更新爲包含正確的格式。
我使用這個代碼來設置值:
[self.testTextField setAllowsEditingTextAttributes:YES];
[self.testTextField setSelectable:YES];
NSMutableAttributedString *linkString = [[NSMutableAttributedString alloc] initWithString:@"hit this "];
[linkString beginEditing];
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"link"];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString addAttribute:NSLinkAttributeName value:[[NSURL URLWithString:@"http://google.com"] absoluteString] range:range];
[attrString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlinePatternDot] range:range];
[attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blackColor] range:range];
[linkString appendAttributedString:attrString];
[linkString appendAttributedString:[[NSAttributedString alloc] initWithString:@" to search"]];
[linkString addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0, [linkString length])];
[linkString endEditing];
[self.testTextField setAttributedStringValue:linkString];
基於這個例子中,你會看到紅色和默認標籤字體的字符串。 然後當你點擊標籤時,字體會改變大小和臉部,鏈接會神奇地呈現。
關於如何讓字符串第一次正確呈現的任何想法?
當你正在構建一個原因你並不需要調用'beginEditing'和'endEditing'串。這些方法僅用於監視字符串的變化,例如'NSTextView'的'NSTextStorage'。 – 2011-12-30 23:51:10
此外,你說文本字段是「綁定」到控制器。 「綁定」一詞的使用意味着您使用的是Cocoa Bindings,但您似乎並非如此,因爲您正在以編程方式設置文本字段的值。文本字段的「attributesStringValue」綁定實際上是否綁定了任何內容? – 2011-12-30 23:54:06
@RobKeniger這是一個IBOutlet是'綁定'(這是什麼權利?) – d2kagw 2011-12-31 02:52:51