我让这个问题不受特定上下文的限制,因为我相信这对其他人会有所帮助:
我有2个IB出口文本字段:
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
Run Code Online (Sandbox Code Playgroud)
我希望能够禁用页面上的按钮,直到两个按钮都正确填写为止,以便在ViewDidLoad()中使用以下委托(我已经在我的VC中添加了TextFieldDelegate。)
override func viewDidLoad() {
textField1.delegate = self
textField2.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
然后,我将使用一些功能来进行表单验证和采取特定的操作,但是为了简单起见,我们假设它只是打印到控制台。
我只想检查textField1中的验证,而不检查textField2中的验证。即,所需的输出是当用户开始编辑textField1时输出的内容,但是如果用户编辑textField2则不输出任何内容。
我目前正在使用:
func textFieldDidBeginEditing(_ textField1: UITextField) {
print("TextField did begin editing method called")
}
Run Code Online (Sandbox Code Playgroud)
但这是在编辑任一textField时输出的。
我以为我指定了_ textField1,所以不确定为什么两者都触发了它?
有一些答案可以解决Swift 3及更早版本的类似问题。特别是,有一个答案引用了此链接http://sourcefreeze.com/uitextfield-and-uitextfield-delegate-in-swift/,我发现它很有用,但仍然停留在此错误上。
UITextField委托方法使您可以识别textField正在开始编辑的内容,因此只需检查它是否为第1个即可textField。
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.textField1 {
print("TextField did begin editing method called")
// Do your Validate for first text field
} else {
//Do Nothing
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |