首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不调用textViewDidChangeSelection的情况下设置NSAttributedString属性?

在不调用textViewDidChangeSelection的情况下设置NSAttributedString属性,可以通过以下步骤实现:

  1. 获取textView的当前光标位置和选中范围。
  2. 创建一个NSMutableAttributedString对象,并设置需要的属性。
  3. 使用textView的selectedRange属性将选中范围设置为NSMakeRange(0, 0),即取消选中状态。
  4. 使用textView的textStorage属性获取textView的文本存储对象。
  5. 使用textStorage的replaceCharactersInRange:withAttributedString:方法,将textView的文本替换为设置好属性的NSMutableAttributedString对象。
  6. 使用textView的setSelectedRange:方法将光标位置设置回原来的位置。

这样就可以在不调用textViewDidChangeSelection的情况下设置NSAttributedString属性。

下面是一个示例代码:

代码语言:txt
复制
// 获取textView的当前光标位置和选中范围
let selectedRange = textView.selectedRange

// 创建NSMutableAttributedString对象,并设置需要的属性
let attributedString = NSMutableAttributedString(string: textView.text)
attributedString.addAttribute(.foregroundColor, value: UIColor.red, range: NSMakeRange(0, attributedString.length))

// 取消选中状态
textView.selectedRange = NSMakeRange(0, 0)

// 替换textView的文本为设置好属性的NSMutableAttributedString对象
textView.textStorage.replaceCharacters(in: NSMakeRange(0, textView.text.count), with: attributedString)

// 将光标位置设置回原来的位置
textView.selectedRange = selectedRange

这样就可以在不调用textViewDidChangeSelection的情况下设置NSAttributedString属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券