Swift仅以编程方式为新输入的文本设置了View字体,而不是所有文本

时间:2019-06-14 10:33:02

标签: swift uikeycommand

我正在使用UIKeyCommands允许带有蓝牙键盘的用户使用CMD + B粗体显示,CMD + I斜体显示。

我在这里成功地做到了...

@objc func boldText() {
        textViewOutlet.font = UIFont(name:"Avenir-Heavy", size: 16)
    }
    @objc func italicText() {
        textViewOutlet.font = UIFont(name:"AvenirNext-Italic", size: 16)
    }

    // enable functions

    override var keyCommands: [UIKeyCommand]? {
        return [
            UIKeyCommand(input: "b", modifierFlags: .command, action: #selector(boldText), discoverabilityTitle: "Bold"),
            UIKeyCommand(input: "i", modifierFlags: .command, action: #selector(italicText), discoverabilityTitle: "Italic")
        ]
    }

但是,当我使用这些键盘命令时,它现在将整个textview更改为粗体或斜体,而不仅仅是将再次取消“粗体”或“斜体”之前键入的文本。

任何帮助,不胜感激!

我认为我需要类似的东西:

@objc func italicText() {
    textViewOutlet.font.FROMTHECURRENTLOCATION UNTIL IT'S DISENGAGED = UIFont(name:"AvenirNext-Italic", size: 16)
}

编辑:

进一步研究时,我发现有一种我认为可以使用的称为键入属性的方法。有关answer

的一些细节

我已经尝试过了:

 @objc func boldText() {
        textViewOutlet.typingAttributes = UIFont(name:"Avenir-Heavy", size: 16)
    }

但是我认为我的方法不正确。有谁知道如何使用打字属性来设置字体?

更新:

我已经通过使用.typing属性并改编了答案here来解决了这个问题。

您可以使用以下命令使用户从按下文本之时起就使文本变为粗体/斜体/不同颜色等。

@objc func boldText() {
        let makeBold: [String : Any] = [
            NSAttributedStringKey.font.rawValue:  UIFont(name: "Avenir-Heavy", size: 15.0)!
        ]
        textViewOutlet.typingAttributes = makeBold
        }

0 个答案:

没有答案