【问题标题】:How to add numbered/bulleted list in SwiftUI?如何在 SwiftUI 中添加编号/项目符号列表?
【发布时间】:2021-08-06 01:11:54
【问题描述】:

如何在TextEditor 的 SwiftUI 中执行此操作?我想从键盘读取返回。 TextFieldonEditingChangedonCommit,但 TextEditor 没有。

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

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

【问题讨论】:

标签: swiftui swiftui-texteditor


【解决方案1】:

您可以使用onChange 观察TextEditor 文本的变化。然后。通过[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} ")
                }
            }
    }
}

【讨论】:

  • 谢谢!也许你有一个想法,如果点是多行的,如何进行正确的缩进,我尝试添加几个 " " 空格......(但不喜欢它)
  • @MikeMaus 我认为在这种情况下,最好在单独的视图中添加项目符号点(而不是在文本编辑器中)。不过肯定会更复杂,也许将其发布到另一个问题中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多