Замена текстовых символов не работает - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь добавить жирные шрифты с attributeText в моем текстовом представлении.Этот шрифт будет применен после некоторого действия кнопки, моя проблема всегда, когда я добавляю жирный шрифт.Он добавляет жирный шрифт и повторяет слова.На прикрепленном изображении жирный шрифт должен быть добавлен после слова «привет».Так что это будет Это жирный

Это то, что я пробовал:

 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

    if boldFont {
        let boldStyle = NSAttributedString(string: text, attributes: [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 20)])
        textView.textStorage.replaceCharacters(in: range, with: boldStyle)
    }
    return true
}

enter image description here

1 Ответ

0 голосов
/ 22 февраля 2019

Я не знаю , почему ваш текст повторяется.Я бы предположил , что это связано с заменой символов в диапазоне, в то время как функция также заменяет символы в диапазоне (диапазон заменяется дважды, таким образом, двойной текст).

Однако я бы не стал использовать метод shouldChangeTextIn для того, что вы пытаетесь сделать.Почему бы просто не заменить textView.text по нажатию кнопки ??

buttonAction() {
   textView.attributedText = // bolded text
}
...