我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")
]
}
但是,当我使用这些键盘命令时,它现在将整个文本视图更改为粗体或斜体,而不是仅再次“解除”在粗体或斜体之前键入的文本。
非常感谢任何帮助!
我想我需要类似的东西:
@objc func italicText() {
textViewOutlet.font.FROMTHECURRENTLOCATION UNTIL IT'S DISENGAGED = UIFont(name:"AvenirNext-Italic", size: 16)
}
编辑 :
在进一步研究这一点时,我发现有一种我认为可以使用的称为类型属性的方法。这个答案的一些细节
我试过这个:
@objc func boldText() {
textViewOutlet.typingAttributes = UIFont(name:"Avenir-Heavy", size: 16)
}
但我认为我的方法不正确。有谁知道如何使用 typingAttributes 设置字体?
更新 :
我通过使用 .typingattributes 并在此处调整答案解决了这个问题。
您可以使用以下命令实现用户在按下文本时将文本设为粗体/斜体/不同颜色等的功能:
@objc func boldText() {
let makeBold: [String : Any] = [
NSAttributedStringKey.font.rawValue: UIFont(name: "Avenir-Heavy", size: 15.0)!
]
textViewOutlet.typingAttributes = makeBold
}