ios - SwiftUI 中的 textFieldDidBeginEditing 和 textFieldDidEndEditing

标签 ios swift swiftui

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

最佳答案

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仅在return、done等时调用。已被点击。

编辑:当用户从一个 TextField 更改为另一个 TextField 时,之前选择的 TextFieldonEditingChanged被调用一次,changed(参数)等于false,并且刚刚选择的TextFieldonEditingChanged也被调用,但参数等于true不会为先前选择的 TextField 调用 onCommit 回调。

编辑 2: 添加一个示例,说明您是否希望在用户点击 return 或更改 TextField 时调用函数 commissed(),以及在点击时调用 changed()用户点击 TextField:

@State var text = ""
var body: some View {
    VStack {
        TextField($text, placeholder: nil, onEditingChanged: { (changed) in
           if changed {
               self.changed()
           } else {
               self.committed()
           }
        }) {
            self.committed()
        }
    }
}

关于ios - SwiftUI 中的 textFieldDidBeginEditing 和 textFieldDidEndEditing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550881/

相关文章:

javascript - 如何检测 cordova iOS WebView 导航事件

swift - 离开增强现实 View 后删除 _SCNSnapshotWindow

ios - SwiftUI:onDismiss 没有被调用

使用 Firebase pod 的 Xcode 12。词法或预处理器问题。 "pb.h' 文件未找到 <angled> 包含;使用 "quotes"代替”?

ios - SwiftUI 和 MVVM 设计模式

ios - 用于 YouTube 集成的 Cocoapods 安装

iphone - 当 iPhone 应用程序在后台运行时显示弹出窗口 (UIAlertView)

swift - 使用swift4解码iso8601日期json

swift - 如何在 Swift 中将十进制数转换为二进制数?

ios - 当从重要的位置更改通知中醒来时,我在后台有多少时间?