UITextView撤消管理器不适用于替换属性字符串(iOS 6)

UITextView撤消管理器不适用于替换属性字符串(iOS 6),第1张

概述iOS 6已更新为使用UITextView进行富文本编辑(UITextView现在可以获得属性文本属性 – 这是非常不可变的 – ).这是在NDA下的iOS 6 Apple论坛上提出的一个问题,可以公开,因为iOS 6现已公开… 在UITextView中,我可以撤消任何字体更改,但无法撤消视图的属性字符串副本中的替换.使用此代码时…… - (void) replace: (NSAttributed iOS 6已更新为使用UITextVIEw进行富文本编辑(UITextVIEw现在可以获得属性文本属性 – 这是非常不可变的 – ).这是在NDA下的iOS 6 Apple论坛上提出的一个问题,可以公开,因为iOS 6现已公开…

在UITextVIEw中,我可以撤消任何字体更改,但无法撤消视图的属性字符串副本中的替换.使用此代码时……

- (voID) replace: (NSAttributedString*) old with: (NSAttributedString*) new{1.    [[myVIEw.undoManager prepareWithInvocationTarget:self] replace:new with:old];2.    old=new;}

…撤消工作正常.

但是如果我添加一行来在我的视图中看到结果,则undoManager不会触发“replace:with:”方法,因为它应该……

- (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];}
总结

以上是内存溢出为你收集整理的UITextView撤消管理器不适用于替换属性字符串(iOS 6)全部内容,希望文章能够帮你解决UITextView撤消管理器不适用于替换属性字符串(iOS 6)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/999377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存