Как запомнить текстовые атрибуты в UITextView, когда пользователь начинает печатать

Я использую UITextView и я пытаюсь отобразить текст, используя attributedText свойство как пользователь вводит.

Вот мой текущий код:

textView.attributedText = NSMutableAttributedString(
    string: "",
    attributes: [
        NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
        NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
        NSKernAttributeName: 0.5,
        NSParagraphStyleAttributeName: paragraphStyle
    ]
)

Проблема в том, что если вы введете пустую строку, когда пользователь начнет печатать, текст не будет отформатирован с attributedText свойства.

Тем не менее, я заметил, что если я предоставлю строку, когда пользователь начинает добавлять эту строку, текст форматируется с attributedText свойства.

Единственный способ решить, что мне нужно, - это переопределить эту функцию и устанавливать текст в атрибут attributeText каждый раз, когда пользователь вводит ключ:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool

Нет ли другого лучшего способа сделать это?

1 ответ

Решение

Вместо установки пустой строки с атрибутом вам нужно использовать typingAttributes имущество.

textView.typingAttributes = [
    NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
    NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
    NSKernAttributeName: 0.5,
    NSParagraphStyleAttributeName: paragraphStyle
]

Смотрите также официальную документацию.

Атрибуты, применяемые к новому тексту, вводимому пользователем.

Другие вопросы по тегам