gpt4 book ai didi

ios - textFieldShouldBeginEditing 不会在 Swift 1.2 中触发正确的文本字段

转载 作者:行者123 更新时间:2023-11-30 14:04:19 25 4
gpt4 key购买 nike

我不确定为什么 textFieldShouldBeginEditing 返回所有 UiTextField

文件:PaymentViewControllerDummy.swift

  class PaymentViewControllerDummy: UIViewController, UITextFieldDelegate {

@IBOutlet weak var dobTextField: UITextField!
@IBOutlet weak var nameTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()

dobTextField.tag = 1
nameTextField.tag = 2

dobTextField.delegate = self
}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
println("Tage From textFile: \(textField.tag) ")
println("Tage From dobTextField: \(dobTextField.tag) ")

if(textField.tag == dobTextField.tag) {
println("You are editing date of birth")

return false
} else {
return true
}
}
}

所有 IBOutlet 均已连接。这是非常标准的代码。我已经多次这样做了,但是无论我按 textField == self.dobTextField 哪个文本字段都会返回 true

控制台结果:

enter image description here

我错过了什么吗?

编辑

这是界面构建器屏幕

enter image description here

enter image description here

注意

我创建了一个独立项目并将代码复制到该项目中,它按预期工作,但在该项目中不起作用。它可能是 StoryBoard 中的某些内容吗?

最佳答案

您不应该通过相等性比较来检查 UI 对象。

您最好使用标签(或者可能是标签,但不是首选),以便在不同的 UI 对象上进行协议(protocol)调用。

class PaymentViewControllerDummy: UIViewController, UITextFieldDelegate {

@IBOutlet weak var dobTextField: UITextField!
@IBOutlet weak var nameTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
dobTextField.delegate = self
}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
println(textField.tag)
println(dobTextField.tag)

if(textField.tag == dobTextField.tag) {
println("You are editing date of birth")

return false
} else {
return true
}
}
}

此外,如果您不在 block (闭包)中,并且想要访问实例变量,则不必必须引用self

关于ios - textFieldShouldBeginEditing 不会在 Swift 1.2 中触发正确的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com