TextView替换字符不起作用

时间:2019-02-22 13:35:18

标签: swift textview nsattributedstring nsrange

我正在尝试在textview中添加带有attributedText的粗体字体。在某些按钮操作之后将应用此字体,我的问题是每当我添加粗体字时。它添加了粗体并重复了单词。在所附的图像中,应在单词“ hello”之后添加粗体。因此显示为这是粗体

这是我尝试过的:

 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 :(得分:0)

我不知道您的文字为何重复。我会猜测,这与您替换范围内的字符有关,而该函数也替换了范围内的字符(您要替换范围两次,因此是双倍文本)。

但是,我不会将shouldChangeTextIn方法用于您要尝试执行的操作。为什么不只单击按钮上的textView.text呢?

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