为 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")
                }
            }