Быстрое применение приписанного текста в подстроке UITextView - PullRequest
0 голосов
/ 21 апреля 2020

Я ищу способ изменить строковые атрибуты подстроки в редактируемом UITextView. Например, если пользователь начинает вводить текст внутри абзаца, как только начинается этот ввод, я хочу сделать весь абзац жирным, или его значение будет c, или какое-либо изменение цвета или стиля.

В настоящее время я 1. нахожу положение курсора 2. затем использую платформу естественного языка для токенизации всего текста в UITextView 3. и затем получаю диапазон символов в абзаце, в котором находится курсор в

Это дает мне тип SubString. Я могу преобразовать это в String для применения атрибутов, но я не выяснил, как применить эту атрибутную строку обратно в SubString и сделать так, чтобы она обновлялась в UITextView. Вот немного кода, который находит абзац.

func textViewDidChange(_ messagesTextView: UITextView) {
        if let selectedRange = messagesTextView.selectedTextRange { //UITextRange
            let cursorPosition = messagesTextView.offset(from: messagesTextView.beginningOfDocument, to: selectedRange.start) //Int
            let index = messagesTextView.text?.index(messagesTextView.text!.startIndex, offsetBy: cursorPosition-1) // reduce cursorposition to detect the character right before the cursor.

            let tokenizer = NLTokenizer(unit: .paragraph)
            tokenizer.string = messagesTextView.text        // tokenize the paragraphs in my live UITextView

            let prange = tokenizer.tokenRange(at: index!)   // select only the paragraph that my cursor is in
            print(messagesTextView.text[prange])            // print the paragraph with String.Index, prange
            let str = String(messagesTextView.text[prange])
}

Отсюда я мог бы определить строковые атрибуты и применить их к str, но я не понял, как поместить этот обновленный текст обратно в UITextView вместо исходного абзаца.

Я ценю любые предложения.

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