SwiftUI中的textFieldDidBeginEditing和textFieldDidEndEditing

时间:2019-06-11 19:54:38

标签: ios swift swiftui

我如何将方法textFieldDidBeginEditingtextFieldDidEndEditing与Apple的默认TextField结构一起使用。

1 个答案:

答案 0 :(得分:2)

TextField具有onEditingChangedonCommit回调。

例如:

@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