如何在 SwiftUI TextField 组件中使用 textChange 事件?

Posted

技术标签:

【中文标题】如何在 SwiftUI TextField 组件中使用 textChange 事件?【英文标题】:How to use textChange event in SwiftUI TextField Component? 【发布时间】:2020-04-17 12:08:23 【问题描述】:

正如我们在 Swift 中使用 UITextField

textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

SwiftUI 中的 TextField 提供

TextField("", text: $input, onEditingChanged:  changed in  
        print("Changed")  
        self.output = "You are typing: " + self.input  
      , onCommit:   
        print("Commited")  
        self.output = "You typed: " + self.input  
      )

Changed 将在开始编辑时打印,Commited 将在按下返回键时打印。

现在我正在输入 ABC

所以现在的问题是

如果我想在按下 A 时调用任何函数或进程,我需要执行哪些步骤?

【问题讨论】:

【参考方案1】:

你可以用这个:

import SwiftUI

struct ContentView: View 

@State var txt = ""

var body: some View 
    TextField("Enter txt", text: Binding<String>(
        get:  self.txt ,
        set: 
            self.txt = $0
            self.callMe(with: $0)
        ))
        .padding(20)


func callMe(with tx: String) 
    print("---> as you type \(tx)")


【讨论】:

很高兴我能帮上忙。请将答案标记为正确。

以上是关于如何在 SwiftUI TextField 组件中使用 textChange 事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中检测 TextField 的实时变化?

我如何在SWIFTUI中把textField作为firstResponder,就像Swift一样:textField.becomesFirstResponder。

SwiftUI 在自定义 TextField 上切换活动/非活动线条颜色

SwiftUI - 如何在另一个视图中响应 TextField onCommit?

SwiftUI:如何使 TextField 适合多行内容?

SwiftUI:如何使 TextField 适合多行内容?