2013-09-25 60 views
1

我最近開始調查NSAtributedString如何工作。我使用NSAtributedString構建類似於富文本編輯器的東西。我有一個自定義的書面CustomRichTextEditor:UITextView的,我想用下面這段代碼覆蓋默認屬性爲NSAtributedString:更改NSAtributedString顏色和字體爲空範圍TextView

UIFont *font = [UIFont systemFontOfSize:24.0]; 
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName,[UIColor darkGrayColor],NSForegroundColorAttributeName,nil]; 
NSMutableAttributedString* attrStr = [self.richTextEditor.attributedText mutableCopy]; 
[attrStr setAttributes:attributes 
       range:NSMakeRange(0, self.richTextEditor.attributedText.string.length-1) 

]; 
self.richTextEditor.attributedText = attrStr; 

但是,因爲我的編輯是空的,範圍是未知的,我有錯誤崩潰終止應用程序由於未捕獲的異常「NSRangeException」,理由是:「NSMutableRLEArray replaceObjectsInRange:withObject:長度::越界」

我如何設置NSAtributedString的字體和顏色時,正確的範圍是未知的?

+0

爲什麼不self.richTextEditor.attributedText.string.length?你正在削減最後一個字。 –

+0

這也是如此! – Georg

+0

問題很明顯,但是我怎樣才能解決它沒有範圍? – Vad

回答

1

嗯,你設定的範圍長度是這樣的:

self.richTextEditor.attributedText.string.length-1 

它可以使錯誤。如果將0 - 1設置爲無符號整數,它將突然變得非常大,因此您的範圍將會超級巨大。

所以你需要做的是檢查你是否有一個string.length > 0之前,你的範圍。 執行所有的代碼無論如何是無用的,如果你的字符串是空的...

+0

範圍[0,0]無誤,但不產生任何結果。那麼我將如何設置顏色和字體呢? – Vad

+0

範圍[0,0]當然會起作用,但不會起作用。但是如果你還沒有文字,你爲什麼要改變它的字體? 您出現的越界異常是Range [0,0-1],因爲它與Range [0,MAX_INT]類似。 – Georg

+0

我想更改字體和顏色的默認設置。就這樣。 – Vad