大家好,我知道它非常简单的问题,但我也没有在谷歌上找到。
在我的情况下,我在文本字段中设置一些默认文本,我想要的是如果用户想要给它不同的名称,那么这个新名称应该是服务器,否则是默认文本。
基本上我想要的是当用户按下键盘的完成按钮时应该重命名功能,但我不知道如何做到这一点请帮忙。
@IBAction func textFieldEditingDidChange(sender: AnyObject) {
println("textField: \(textField.text)")
}
答案 0 :(得分:0)
您是否有其他用户将要完成的textFields,或者这是唯一的字段?如果还有其他字段需要填写,只需添加"提交"带有动作的按钮,并将您的功能绑定在一起,将所有textField推送到您的服务器。
如果您只有一个电子邮件地址字段,则可以使用其他解决方案。
您已在此处@IBAction func textFieldEditingDidChange(sender: AnyObject) {
采取行动,您最有可能想要做的是在文本字段上实施委托方法。这样,当textField改变时,你的函数将被调用。只需将默认文本放在界面构建器属性检查器窗格的占位符中,或将其添加到视图中,并使用代码加载。 textfield.text = "default text"
。在任何情况下,除非用户编辑textField,否则该函数不会触发。如果用户没有编辑字段,您可能希望添加另一种方法来提取此数据,您可以使用segue或通过调用viewWillDisappear().
切换到委托方法有几个步骤。 This link has a good example of what is needed
首先,您需要将UITextFieldDelegate添加到类
class ViewController: UIViewController, UITextFieldDelegate {
然后在viewDidLoad()中添加一个委托到您的文本字段并设置默认文本。
override func viewDidLoad() {
textfield.delegate = self
textfield.text = "default text"
}
现在添加你的委托方法。
func textFieldDidEndEditing(_ textField: UITextField) {
print("textField: \(textfield.text!)")
}
最重要的是,将您的操作更改为插座,并确保在连接检查器中删除发送事件。
@IBOutlet weak var textfield: UITextField!