iOS: вставить атрибутивную строку в курсор для UITextView? - PullRequest
0 голосов
/ 11 декабря 2018

UITextView позволяет вставлять обычный текст в курсор с помощью функции insertText.Есть ли чистый способ сделать это с помощью атрибутивного текста?

Является ли единственным подходом разделить свойство attributedText на две части - пре-курсор и пост-курсор - затем добавить новую приписанную строку ктекст с указанием перед курсором, после которого следует добавление текста с указанием после курсора?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

По совету @matt, вот функция Swift 4.x:

fileprivate func insertAtTextViewCursor(attributedString: NSAttributedString) {
    // Exit if no selected text range
    guard let selectedRange = textView.selectedTextRange else {
        return
    }

    // If here, insert <attributedString> at cursor
    let cursorIndex = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start)
    let mutableAttributedText = NSMutableAttributedString(attributedString: textView.attributedText)
    mutableAttributedText.insert(attributedString, at: cursorIndex)
    textView.attributedText = mutableAttributedText
}
0 голосов
/ 11 декабря 2018

Вставьте в изменчивую копию атрибутированного текста текстового представления, вызвав https://developer.apple.com/documentation/foundation/nsmutableattributedstring/1414947-insert.

...