【发布时间】:2021-02-21 03:49:41
【问题描述】:
我正在开发一个 macOS 富文本编辑器,它为文本视图的每一行应用预定义的样式。
为了格式化这些行,我使用了NSAttributedString,然后,我将该字符串插入到我的UITextView 中。为了让事情变得更简单,我使用了一个名为 SwiftRichString 的工具。
我的代码如下所示。它直截了当,效果很好。
import Cocoa
import SwiftRichString
import AppKit
class ViewController: NSViewController {
@IBOutlet var textView: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
// Format the string
let style = Style {
$0.font = NSFont(name: "Arial", size: 20)
$0.color = NSColor.black
$0.alignment = .center
}
let attributedText = "Hello World!".set(style: style)
// Add formatted string to the text view
textView.textStorage?.append(attributedText)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
现状:
用户正在输入格式化的行。然后当用户点击 Return 并输入内容时,新行的格式会返回 UITextView 的默认样式。
我想要什么:
用户正在输入特定格式的行,然后他点击 Return。下一行应该被格式化为另一种预定义的样式on-the-go。
示例:
- 用户正在输入 标题 行。当前样式为(Arial,粗体,20pt)。
- 他点击返回。
- 下一行的样式应为 Normal 使用预定义样式(Arial,12pt)的文本。
重要提示:
在我上面的代码中,我能够轻松地格式化该行,因为它是硬编码的。我真正的问题是,如何立即格式化下一行,因为下一行将由用户输入。样式应在用户开始编写之前应用到下一行。
【问题讨论】:
-
也许设置
typingAttributtes: developer.apple.com/documentation/appkit/nstextview/… ? -
您能详细说明一下吗?
标签: ios swift macos textview uitextview