如何在 Swift 中更改键盘完成按钮上 Textfield 的文本?

Posted

技术标签:

【中文标题】如何在 Swift 中更改键盘完成按钮上 Textfield 的文本?【英文标题】:How to change the text of Textfield on keyboard Done button in Swift? 【发布时间】:2018-01-04 10:49:39 【问题描述】:

大家好,我知道这是一个非常简单的问题,但我也没有在谷歌上找到。

在我的情况下,我在文本字段中设置了一些默认文本,我想要的是如果用户想给它提供不同的名称,那么这个新名称应该去服务器,否则默认文本。

基本上我想要的是重命名功能应该在用户按下键盘的完成按钮时完成,但我不知道该怎么做,请帮忙。

@IBAction func textFieldEditingDidChange(sender: AnyObject) 
       println("textField: \(textField.text)")

【问题讨论】:

【参考方案1】:

您是否还有其他用户将要填写的文本字段,或者这是唯一的字段?如果还有其他字段要完成,只需添加一个带有操作的“提交”按钮,然后绑定您的函数以通过这种方式将所有文本字段推送到您的服务器。

如果您的电子邮件地址只有一个字段,那么您还有另一种解决方案。

你在这里@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!

【讨论】:

嗨@Christopher我有2个文本字段,我想更改键盘完成按钮上的文本有什么办法吗? 您可以在属性检查器的界面构建器中执行此操作,然后转到“文本输入特征”部分,然后从“返回键”下拉列表中进行选择。您有很多选择可以将其从 Return 更改为 Done、Continue、Go 等。 嘿,我已经这样做了,但问题是当我输入任何内容并按下完成按钮时,它不会更改我设置为文本的任何默认值,它只会返回该值。 在您的textFieldDidEndEditing(_ textField: UITextField) 中,您需要使用 textfield.text 从文本字段中提取信息。

以上是关于如何在 Swift 中更改键盘完成按钮上 Textfield 的文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 2.0 中使用完成按钮做数字键盘?

如何从 Webview 的键盘完成按钮操作

设置下一个按钮和完成按钮,而不是在键盘 swift 4 中返回

如何在自定义键盘中快速制作返回按钮

如何更改键盘完成按钮的行为?

如何在 Swift 中更改 UINavigationBar 中的编辑/完成按钮标题 [重复]