在SwiftUI的
TextField
上,您可以使用.onSubmit()
修饰符为键盘的return/submit按钮设置一个动作。如何在TextEditor
上做到同样的效果?(.onSubmit()
似乎不起作用。)TextField
上,您可以使用.onSubmit()
修饰符为键盘的return/submit按钮设置一个动作。如何在TextEditor
上做到同样的效果?(.onSubmit()
似乎不起作用。)您可以像这样使用 on change 来绑定 TextEditor
的变量:
TextEditor(text: $text)
.onChange(of: text) { _ in
if !text.filter({ $0.isNewline }).isEmpty {
print("Found new line character")
}
}
请注意,TextEditor
没有一个明确的提交按钮。它旨在接受各种文本,数量不限。
另一种了解用户何时创建新行的方法:
TextEditor(text: $text)
.onChange(of: text) { string in
for char in string
{
if char() == "\n"
{
print("Found new line character")
}
}
}
Yrb的回答和这个方案都很好,但是每当发现一个新行并且每次向文本编辑器中添加一个新字符时,您就需要执行相同的操作:print("Found new line character")
如果您想要知道每当用户按下回车或创建新行时的情况,这个方案对您来说是更好的解决方案:
TextEditor(text: $text)
.onChange(of: text) { string in
if string.last == "\n"
{
print("Found new line character")
}
}
onCommit:当用户按下回车键时,TextField调用onCommit闭包。
TextEditor
,而不是 TextField
。此外,.onCommit
已被弃用,推荐使用 OP 讨论过的 .onSubmit
。 - Yrb