Обнаружение вставки UITextView в textViewDidChange - PullRequest
0 голосов
/ 04 июня 2018

Я создаю 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
}

НЕПРАВИЛЬНОЕ ПОВЕДЕНИЕ

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...