如何在 TextEditor
中的 SwiftUI 中执行此操作?我想到了从键盘读取返回。 TextField
有 onEditingChanged
和 onCommit
,但 TextEditor 没有。
在 Notes 应用程序中,它会自动检测编号列表,并具有用于添加项目符号列表的按钮。
我特别希望它在空行后添加数字/项目符号。 (如果可能)
答案 0 :(得分:1)
您可以使用 TextEditor
观察 onChange
文本的变化。然后。通过执行 [text] newText
,您可以捕获旧值和新值。
text
是之前的文本newText
是当前文本您可以将这些比较为仅在用户添加字符时添加项目符号,而不是删除它们。
请注意,我的实现还不能处理粘贴大范围的文本。
struct ContentView: View {
@State var text = "\u{2022} "
var body: some View {
TextEditor(text: $text)
.frame(height: 400)
.border(Color.black)
.onChange(of: text) { [text] newText in
if newText.suffix(1) == "\n" && newText > text {
self.text.append("\u{2022} ")
}
}
}
}