我正在创建一个UITextView
用作基本IDE。当用户粘贴文本(代码)时,我正在修改它以使其与其他文本内联(正确缩进)。但是,我也使用attributedText
方法对文本(textViewDidChange
)着色。因此,当我粘贴文本时,首先插入然后调整内联。这个过程看起来有点奇怪,特别是对于大量的文本。我想知道是否有办法让我抓住文本被粘贴到textViewDidChange
中以避免在文本被修改之前运行属性更改。请注意,textView shouldChangeTextIn
方法中的着色属性是不可能的,因为我通过两种方法的交互实现了一些自定义行为,并且需要在textViewDidChange
阶段添加属性。
示例设置
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if (text == UIPasteboard.general.string) {
// MODIFY PASTABLE TEXT HERE
// INSERT MODIFIED TEXT
textView.replace(textRange, withText: newText)
// PREVENT OLD TEXT FROM BEING INSERTED
return false
}
}
func textViewDidChange(_ textView: UITextView) {
// MANAGE ATTRIBUTES
}
WEIRD BEAVAVIOR