【发布时间】:2020-05-29 01:09:01
【问题描述】:
我正在使用 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 级别按下回车键的时间。但是,我认为这是不希望的,因为我不希望在按下回车键时执行此操作。
非常感谢有关 onCommit 与特定键(返回)的任何帮助。
我是 StackOverflow 的新手,如果需要更多信息,请告诉我。
【问题讨论】:
-
标准
TextField不会发生这种情况,所以我认为它已被使用MacEditorTextView。你会显示它的代码吗? -
MacEditorTextView 实际上是一个 NSTextView 的包装器,因此它可以用于 SwiftUI。可以在这里找到:gist.github.com/unnamedd/6e8c3fbc806b8deb60fa65d6b9affab0。
标签: textview swiftui keystroke