textView 中的粗体/斜体样式文本输入

Posted

技术标签:

【中文标题】textView 中的粗体/斜体样式文本输入【英文标题】:bold/italic style text input in textView 【发布时间】:2019-06-18 00:37:17 【问题描述】:

我想要 2 个按钮,一个用于粗体,一个用于斜体。当用户按下任一按钮时,我希望它为他们在 textView 上输入的文本启用粗体/斜体,我该如何快速执行此操作?

【问题讨论】:

***.com/questions/31647653/… 【参考方案1】:

将为两个按钮添加两个不同的操作。如果用户单击按钮,则粗体或斜体波纹管方法将被调用,并且 textView 的字体将发生变化。

@objc func boldButtonAction(sender : UIButton) 
    textView.font = UIFont.boldSystemFont(ofSize: 14)


@objc func italicButtonAction(sender : UIButton) 
    textView.font = UIFont.italicSystemFont(ofSize: 14)

【讨论】:

您可以像上面一样简单地分配/更改 textview 字体。 请在您的代码中添加一些解释,以便其他人可以从中学习 - 通过编辑答案来做到这一点,而不是将解释放在评论部分【参考方案2】:

您可以使用键盘附件视图。

override func viewDidLoad() 
    super.viewDidLoad()

    let bar = UIToolbar()
    let boldButton = UIBarButtonItem(title: "Bold", style: .plain, target: self, action: #selector(toggleBold))
    let italicButton = UIBarButtonItem(title: "Italic", style: .plain, target: self, action: #selector(toggleItalic))
    bar.items = [boldButton, italicButton]
    bar.sizeToFit()
    textView.inputAccessoryView = bar


    guard let font = getFont() else  assert(false); return 
    textView.font = font
    textView.typingAttributes = [NSAttributedString.Key.font: font]

如果启用/禁用粗体和斜体,则将布尔值切换为 1 和 0,并将字体更新为:

func updateFont() -> UIFont? 
    let italic = keyboardAddon.italic
    let bold = keyboardAddon.bold
    let font = UIFont(name: "Helvetica", size: 14.0)

    if bold && italic 
        return font?.withTraits([ .traitBold, .traitItalic ])
     else if bold 
        return font?.withTraits(.traitBold)
     else if italic 
        return font?.withTraits(.traitItalic)
     else 
        return font
    

【讨论】:

以上是关于textView 中的粗体/斜体样式文本输入的主要内容,如果未能解决你的问题,请参考以下文章

contentEditable div 中的粗体选定文本,使用纯 JavaScript,不使用 jQuery 等库

代码过滤富文本的粗体 斜体 颜色 空格

代码过滤富文本的粗体 斜体 颜色 空格

如何在 Android TextView 中将字体样式设置为粗体、斜体和下划线?

MFC 中的粗体标签

删除输入文本框的粗体框