我有以下代码:
class ViewController: UIViewController, UITextFieldDelegate {
// MARK: Properties
@IBOutlet weak var layersTextField: UITextField!
@IBOutlet weak var innerShapeTextField: UITextField!
@IBOutlet weak var outerShapeTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
layersTextField.delegate = self
innerShapeTextField.delegate = self
outerShapeTextField.delegate = self
}
// MARK: UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(textField: UITextField) {
// do something
}
}
现在在textFieldDidEndEditing(_:)
我想做点什么,取决于UITextField
调用此方法。
有什么方法可以区分,UITextField
这样做了吗?我可以在UITextField
上设置某种ID或标识符吗?
答案 0 :(得分:2)
您可以使用以下两种方法之一进行此确定:出口或标签。对于插座方法,声明一个插座实例变量(使用IBOutlet
关键字),然后建立插座连接。在您的委托方法中,使用指针比较来测试传入的文本对象是否是出口引用的同一对象
例如,假设您声明并连接名为SSN
的插座。您的代码可能类似于Listing 3-1:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
if (textField == SSN) {
// ...
return NO;
}
return YES;
}
// Translated to Swift:
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
if textField === SSN {
// ...
return false
}
return true
}
答案 1 :(得分:1)
您可以通过下一个提交的名称进行检查。 if textField == layersTextField { //do what you want }
您可以为需要执行特定操作的任何文本字段执行此操作。
答案 2 :(得分:0)