SwiftUI:onCommit是在我单击而不是按Return时触发的

问题描述 投票:0回答:1

我正在与onCommit一起在SwiftUI中使用文本视图(该应用程序适用于MacOS。)>

struct TextBlockView: View {
     @State private var content = ""
    var id = UUID()

       var body: some View {

        let block = MacEditorTextView(text: $content, onEditingChanged: {
            print("editing changed")
        }, onCommit: {
            Keystroke.keystroke.enterPressed = true
            print("add new textblock here")
            //trigger function to create next block
           }).multilineTextAlignment(.leading)
               .frame(minWidth: 300,
                      maxWidth: .infinity,
                      minHeight: 40,
                      maxHeight: .infinity)
                .focusable()

        let tag = Rectangle()
                    .fill(Color.init(red: 1.00, green: 0.95, blue: 0.80, opacity: 1))
                    .frame(width: 10, height: 10)


        return HStack {
            tag
            block
        }
       }
}

当用户单击文本框以外的位置(添加新的文本框)时,将发生所需的操作。但是,我希望在用户点击回车时发生此操作。当我第一次为onCommit编写代码时,它以这种方式工作了大约30分钟,然后才确定一次提交是单击而不是按回车键。

我曾尝试使用“ onCommand”代替onCommit,但这没有用,并且我不确定是否使用了适当的选择器。我还尝试捕获在NSWindow级别按下Enter键时的情况。但是,我决定不希望这样做,因为我不希望每当按下Enter键时都会执行此操作。

非常感谢将onCommit与特定键(返回)相关联的任何帮助。

我是StackOverflow的新手,所以如果需要更多信息,请告诉我。

我正在与onCommit一起在SwiftUI中使用文本视图(该应用程序适用于MacOS)。 struct TextBlockView:视图{@State private var content =“” var id = UUID()var正文:一些视图{...

textview swiftui keystroke
1个回答
0
投票

您可以实现类似这样的功能。当您单击蓝色框时,它会发送一个单据以表明您已拥有。将框放在文本框后面。

© www.soinside.com 2019 - 2024. All rights reserved.