2011-07-21 149 views
2

當用戶鍵入到我的文本文件中時,我希望新字符繼承以前的屬性。Objective C - NSAttributedString擴展屬性?

我目前從前一個字符中獲取屬性並將其添加爲新範圍的新屬性?我怎樣才能使它擴展以前的attributesString而不是?

// What I have 
"a"{attribute1 (0,1)} "b"{attribute2 (1,1)} "c"{attribute3(2,1)} 
// What I'm trying to do 
"abc" {attribute1 (0,3)} 

注:這種情況發生時爲每一個字符的用戶類型,從而爲用戶鍵入新的角色應該繼承以前的屬性。

編輯: 更多信息

// So I create a new AttributedString, added it to my mutable string 
NSAttributedString *newString = [[NSAttributedString alloc] initWithString:USER_INPUT attributes:self.defaultAttributes]; 
[_mutableAttributedString insertAttributedString:newString atIndex:selectedNSRange.location]; 

// Is it possible to add the USER_INPUT to the end of my mutable attributedString and extends the range of the previous attribute? 
+0

-1?看起來很不公平 – dreamlax

回答

2

可以使用replaceCharactersInRange:withString:方法來做到這一點。如果指定範圍的長度爲0,則不會替換字符。該字符串將自動賦予它之前的字符屬性,除非它在開始處,在這種情況下,它將被賦予字符後面的屬性。

NSRange range = NSRangeMake([_mutableAttributedString length],0); 
[_mutableAttributedString replaceCharactersInRange:range withString:USER_INPUT];