我正在创建一个
UITextView
用作基本IDE。当用户粘贴文本(代码)时,我正在修改它,使其与其他文本内联(正确缩进)。不过,我也在给文本着色(
attributedText
)使用
textViewDidChange
方法。因此,当我粘贴文本时,它首先被插入,然后进行内联调整。这个过程看起来有点奇怪,尤其是对于一大堆文本。我想知道有没有办法让我知道这篇文章是被粘贴进去的
文本视图更改
以避免在修改文本之前运行属性更改。注意,的
textView shouldChangeTextIn
方法是不可能的,因为我正在通过两个方法的交互实现一些自定义行为,并且需要在
舞台。
示例设置
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
}
奇怪的行为