ios - 如何识别哪个 UITextField 被 textFieldDidChange 更改了

标签 ios swift uitextfield swift4 target-action

我正在使用多个 UITextField,并且想随时对其中任何一个进行任何更改。

它看起来基本上是这样的:

@IBOutlet weak var f1: UITextField!
@IBOutlet weak var f2: UITextField!
@IBOutlet weak var f3: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    f1.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
    f2.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
    f3.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
}

@objc func textFieldDidChange(_ textField: UITextField) {
    // Data in one of the fields changed.
    if self.view.tag == 1 {
        print("field 1")
    } else {
        if self.view.tag == 2 {
            print("field 2")
        }
        //...
    }
}

如您所见,我试过设置标签,但不确定如何在此处访问它们。

我正在使用 XCode 9.01 和 Swift 4。

最佳答案

你不需要标签,因为你有 socket 。只需将 textField 参数与您的每个导出进行比较:

@objc func textFieldDidChange(_ textField: UITextField) {
    if textField == f1 {
        print("field 1")
    } else if textField == f2 {
        print("field 2")
    } else if textField == f3 {
        print("field 3")
    }
}

关于ios - 如何识别哪个 UITextField 被 textFieldDidChange 更改了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980008/

相关文章:

swift - 将scrollView.delegate设置为scrollView而不是UITableView

ios - 在每次编辑 UITextField 时调用一个方法

ios - 导航栏下的模态视图 Controller - Swift

android - Android 和 IOS 上的 Qt session 管理

ios - 检查 iOS 设置中的 Facebook/Twitter 帐户是否已更改

ios - 引用泛型类型 'Map' 需要 <...> 中的参数 - Swift

ios - 为什么有时不调用完成处理程序?

iphone - 允许在复杂的 iPhone UI 上完成文本编辑的最佳方式

ios - 如何根据 iPhone 向上移动文本字段。 swift 大小

iphone - 在 iPhone 上加载应用程序时 ImageLoaderMachO 崩溃