2009-10-10 72 views
0

我有綁定到一個NSTextView的屬性串。每次編輯字符串時,我都會使用一種稱爲(使用KVO)的方法,以根據regEx匹配向字符串添加背景顏色屬性。我通過創建一個新的可變屬性串與-initWithAttributedString:然後-beginEditing,,-endEditing做到這一點。一旦我添加了所有我想要的背景顏色的屬性,我稱之爲字符串的setter [self setTextViewString:mutableAttributedString]的問題是,如果有確實是添加到字符串的任何屬性,它殺死撤消和光標移動到字符串的結尾。保持撤消修改,束縛,NSAttributedString

我怎樣才能保持復原嗎?我通過在setter的任一側調用textView的selectedRanges和setSelectedRanges:方法來保持光標位置,但這仍然有點冒失。

我無法TextView的直接綁定到mutableattributedstring,但它好像應該是修改綁定的字符串,因此它不會弄亂編輯更直接的方式。

PS,添加屬性發生在KVO方法完成後,通過調用-performSelectorOnMainThread:這是我可以獲取添加的屬性來顯示的唯一方法。

回答

0

[self setTextView:mutableAttributedString]

赦免?你正在將你的textView設置爲屬性字符串?在那裏保留你的文本視圖不是更有意義嗎?

嘗試獲取文本視圖的textStorage,並通過發送文本存儲器setAttributedString:消息將其內容替換爲新的屬性字符串。

+0

對不起,那是不清楚,我改成了更有意義。我有我的textview綁定到一個屬性的字符串,所以我打電話給*字符串的* setter,而不是textview本身的setter。 – 2009-10-12 20:34:41