为 TextEditor SwiftUI 检测键盘 "submit button" 按下
Detecting keyboard "submit button" press for TextEditor SwiftUI
在 SwiftUI 的 TextField
上,您可以使用 .onSubmit()
修饰符为键盘的 return/submit 按钮设置一个动作。你如何用 TextEditor
达到同样的效果? (.onSubmit()
好像不行。)
您可以像这样对 TextEditor
的绑定变量使用更改:
TextEditor(text: $text)
.onChange(of: text) { _ in
if !text.filter({ [=10=].isNewline }).isEmpty {
print("Found new line character")
}
}
意识到 TextEditor
本身没有提交按钮。它旨在接受无限量的各种文本。
这是您的解决方案:
onCommit:当用户按下 Return 键时,TextField 调用 onCommit 关闭。
了解用户何时创建新行的另一种方法:
TextEditor(text: $text)
.onChange(of: text) { string in
for char in string
{
if char() == "\n"
{
print("Found new line character")
}
}
}
Yrb answer,这个很好用,但是一旦找到新行,每次将新字符添加到 TextEditor 时,您都会执行 same action: print("Found new line character")
如果您想知道每次用户按下回车键或创建新行时,这个解决方案对您来说是更好的解决方案:
TextEditor(text: $text)
.onChange(of: text) { string in
if string.last == "\n"
{
print("Found new line character")
}
}
在 SwiftUI 的 TextField
上,您可以使用 .onSubmit()
修饰符为键盘的 return/submit 按钮设置一个动作。你如何用 TextEditor
达到同样的效果? (.onSubmit()
好像不行。)
您可以像这样对 TextEditor
的绑定变量使用更改:
TextEditor(text: $text)
.onChange(of: text) { _ in
if !text.filter({ [=10=].isNewline }).isEmpty {
print("Found new line character")
}
}
意识到 TextEditor
本身没有提交按钮。它旨在接受无限量的各种文本。
这是您的解决方案:
onCommit:当用户按下 Return 键时,TextField 调用 onCommit 关闭。
了解用户何时创建新行的另一种方法:
TextEditor(text: $text)
.onChange(of: text) { string in
for char in string
{
if char() == "\n"
{
print("Found new line character")
}
}
}
Yrb answer,这个很好用,但是一旦找到新行,每次将新字符添加到 TextEditor 时,您都会执行 same action: print("Found new line character")
如果您想知道每次用户按下回车键或创建新行时,这个解决方案对您来说是更好的解决方案:
TextEditor(text: $text)
.onChange(of: text) { string in
if string.last == "\n"
{
print("Found new line character")
}
}