我正在尝试将C#/。Net应用程序移植到SwiftUI,并且我在尝试一些基本的东西。我有一个包含行的列表,其中每行包含一些Text,Picker和TextEditor。当用户TAB在文本编辑器中时,我想添加新行并将键盘焦点移至该行。
因此,用.Net术语来说,是一个带有源(行)的事件,然后以编程方式添加新行并设置键盘焦点。在SwiftUI中,这似乎相当复杂。到目前为止,我所做的是添加了一个更复杂的绑定,以便在用户进入选项卡时设置一个标志,像这样...
TextEditor(text: Binding(
get: { evidence },
set: { value in
if value.hasSuffix("\t") {
tabDetected = true
} else {
evidence = value }
} ))
然后在父视图上这样
.onChange(of: tabDetected) { value in
if value {
document.addFinding(practice: practice)
tabDetected = false
}
}
这仍然不能识别“事件”的来源,并且我找不到移动键盘焦点的方法。对我来说,这似乎很复杂,有什么更好的建议吗?