使用UITextView时,我尝试将自定义属性添加到属性字符串.但是,在分配到UITextView的attributedText后,所有自定义键都会丢失.像这样:
NSMutableAttributedString *lString = [[ NSMutableAttributedString alloc ] initWithString: @"astring" attributes: @{ @"customkey": @"customvalue" }]; NSLog(@"string: %@",lString); // shows customkey present textView.attributedText = lString; NSLog(@"result: %@",self.textView.attributedText); // shows customkey missing
这应该有用吗?
解决方法
根据评论,您试图滥用NSAttributedString.NSAttributedString和UITextView仅用于处理记录的属性.您可能最初可以在字符串中存储自定义属性,但是一旦文本视图开始处理属性文本并且您向文本视图询问最新的属性文本,文本视图将很快消除任何自定义属性.
更好的解决方案是创建一个扩展UITextView的类.您的子类应添加一个属性,该属性可以包含您想要的任何自定义属性.或者您的自定义类可能会覆盖attributedText和’setAttributedText:`方法.这些将负责保存和恢复在属性字符串中找到的任何自定义属性.
注意:此答案适用于iOS 6及更早版本.对于iOS 7,请参阅下面的@ julien_c的回答.