Textview替换字符不起作用

问题描述 投票:0回答:1

我正在尝试在textview中添加带有attributionText的粗体字体。一些按钮操作后会应用此字体,我的问题是每当我添加粗体字体时。它正在添加粗体字并重复单词。在附图中,应在单词“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

swift textview nsattributedstring nsrange
1个回答
0
投票

我不知道为什么你的文字在重复。我猜这与你替换范围中的字符有关,而函数也替换范围中的字符(你正在替换范围两次,因此双文本)。

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

buttonAction() {
   textView.attributedText = // bolded text
}
© www.soinside.com 2019 - 2024. All rights reserved.