我如何将方法textFieldDidBeginEditing
和textFieldDidEndEditing
与Apple的默认TextField结构一起使用。
答案 0 :(得分:2)
TextField
具有onEditingChanged
和onCommit
回调。
例如:
@State var text = ""
@State var text2 = "default"
var body: some View {
VStack {
TextField($text, placeholder: nil, onEditingChanged: { (changed) in
self.text2 = "Editing Changed"
}) {
self.text2 = "Editing Commited"
}
Text(text2)
}
}
仅当用户选择onEditingChanged
时才调用textField
中的代码,而只有在点击返回,完成等操作时才调用onCommit
。
编辑:当用户从一个TextField
更改为另一个TextField
的{{1}}时,将使用{{1} }(参数)等于onEditingChanged
,并且刚刚选择的changed
的{{1}}也被调用,但参数等于false
。对于先前选择的TextField
,不会不调用onEditingChanged
回调。
修改2:
添加一个示例,说明您要在用户点击返回或更改true
时调用函数onCommit
,而在用户点击TextField
时调用函数committed()
:
TextField