如何在 SwiftUI 中添加 numbered/bulleted 列表?
How to add numbered/bulleted list in SwiftUI?
如何在 TextEditor
的 SwiftUI 中执行此操作?我想从键盘上阅读 return。 TextField
有 onEditingChanged
和 onCommit
,但 TextEditor 没有。
在 Notes 应用程序中,它会自动检测编号列表,并具有用于添加项目符号列表的按钮。
我特别希望它在空行后添加 number/bullet。 (如果可能的话)
您可以使用 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} ")
}
}
}
}
如何在 TextEditor
的 SwiftUI 中执行此操作?我想从键盘上阅读 return。 TextField
有 onEditingChanged
和 onCommit
,但 TextEditor 没有。
在 Notes 应用程序中,它会自动检测编号列表,并具有用于添加项目符号列表的按钮。
我特别希望它在空行后添加 number/bullet。 (如果可能的话)
您可以使用 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} ")
}
}
}
}