iOS 6中已更新为使用UITextView的富文本编辑(一个UITextView现在挣的attributedText财产 - 其愚蠢非mutable-)。 这里有一个问题问及保密协议,iOS 6中苹果论坛的,可以作出公开,因为iOS 6的是现在已经上市了...
在一个UITextView,我可以撤消任何字体的变化,但不能撤销在视图的属性串的副本的替代品。 当使用此代码...
- (void) replace: (NSAttributedString*) old with: (NSAttributedString*) new
{
1. [[myView.undoManager prepareWithInvocationTarget:self] replace:new with:old];
2. old=new;
}
...撤消运作良好。
但是,如果我添加一行得到的结果在我看来可见,在UndoManager的不火的“替代:用”方法,因为它应该...
- (void) replace: (NSAttributedString*) old with: (NSAttributedString*) new
{
1. [[myView.undoManager prepareWithInvocationTarget:self] replace:new with:old];
2. old=new;
3. myView.attributedText=[[NSAttributedString alloc] initWithAttributedString:old];
}
任何想法? 我有任何的替代方法,同样的问题,采用了一系列与否,对于MutableAttributedString我试图上线“2”用...
嗯,哇,我真的没有想到这个工作! 我无法找到一个解决办法,所以我刚开始尝试任何事情,一切...
- (void)applyAttributesToSelection:(NSDictionary*)attributes {
UITextView *textView = self.contentCell.textView;
NSRange selectedRange = textView.selectedRange;
UITextRange *selectedTextRange = textView.selectedTextRange;
NSAttributedString *selectedText = [textView.textStorage attributedSubstringFromRange:selectedRange];
[textView.undoManager beginUndoGrouping];
[textView replaceRange:selectedTextRange withText:selectedText.string];
[textView.textStorage addAttributes:attributes range:selectedRange];
[textView.undoManager endUndoGrouping];
[textView setTypingAttributes:attributes];
}
撤消管理器设置它的“文本”或“attributedText”属性复位后,这就是为什么它不工作。 无论这种行为是bug还是设计我不知道。
但是,您可以使用UITextInput协议的方法来代替。
- (空隙)replaceRange:(UITextRange *)范围withText:(的NSString *)文本
这工作。
文章来源: UITextView undo manager do not work with replacement attributed string (iOS 6)