Я работаю с 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
}
}
}
Требуемое действие происходит, когда пользователь щелкает от текстового блока (добавляется новый текстовый блок ). Однако я бы хотел, чтобы это действие выполнялось, когда пользователь нажимает return. Это работало примерно 30 минут, когда я впервые написал код для onCommit, прежде чем он решил, что фиксация была щелчком, а не нажатием клавиши возврата.
Я пытался использовать «onCommand» вместо onCommit, но это не сработало, и я не уверен, использовал ли я соответствующий селектор. Я также попытался захватить, когда клавиша ввода нажата на уровне NSWindow. Однако я решил, что это нежелательно, так как я не sh, чтобы это действие выполнялось всякий раз, когда нажимается клавиша ввода.
Любая помощь в связи onCommit с определенной клавишей c (return ) были бы очень признательны.
Я новичок в StackOverflow, поэтому дайте мне знать, если потребуется дополнительная информация.