我正在使用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
}