如何在 SwiftUI 中添加编号/项目符号列表?

Mik*_*aus 5 swiftui swiftui-texteditor

如何在 SwiftUI 中做到这一点TextEditor?我想到从键盘读取返回。TextFieldonEditingChangedonCommit,但 TextEditor 没有。

在Notes应用程序中,它会自动检测编号列表,并具有用于添加项目符号列表的按钮。

我特别希望它在空行后添加数字/项目符号。(如果可能的话)

在此输入图像描述

ahe*_*eze 11

您可以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} ")
                }
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

输入新行时,会在行首插入项目符号点