swift - Swift 以编程方式设置 textview 字体仅适用于键入的新文本而不是所有文本
问题描述
我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
}
解决方案
推荐阅读
- python - 如何更改 tkinter 中输入文本的颜色?
- json - 如何在 JSON 文件中用空字符串替换匹配的字符串?
- database - 访问不想打开报告 - 不关注其他窗口
- algorithm - 如何在遗传算法中进行二进制编码以获得更好的时间表调度问题结果?
- c++ - 如果进程正在运行,我如何关闭我的程序?
- python - KerasLayer 模型经过微调后尺寸增大
- python - 使用 Pyinstaller 创建的 .exe 文件显示错误 input(): lost sys.stdin
- angular - 打字稿类方法返回未定义
- python - 验证人是否在场
- smpp - 如何使用 https://github.com/farhadi/node-smpp 接收 message_payload?