如何自动清除文本字段
Posted
技术标签:
【中文标题】如何自动清除文本字段【英文标题】:How to clear the text field automatically 【发布时间】:2016-05-07 04:36:48 【问题描述】:我对 Swift 中的 UITextField()
有疑问。点击后如何清除文本字段中的文本?
我的textField.text = "0"
。我想在单击文本字段时自动删除数字“0”:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate
@IBOutlet var lbltext: UILabel!
@IBOutlet var scrolview1: UIScrollView!
@IBOutlet var fi: UITextField!
@IBOutlet var scrolviewus: UIScrollView!
@IBOutlet var counterLabel: UILabel!
override func viewDidLoad()
super.viewDidLoad()
fi.text = "0"
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
@IBAction func button(sender: AnyObject)
lbltext.numberOfLines = 0
lbltext.text! = lbltext.text! + "\n" + fi.text! + "\n" + "--- "
【问题讨论】:
可能相关:***.com/questions/28530167/… 那又怎样,是同一个概念。 我是第一次使用 swift,我不知道如何实现目标-c 好吧,如果您阅读了另一个问题,则没有答案,(obj-c 和 swift api 在某些方面是相似的)所以可能就是这样。如果有办法,那么希望有人会解释......祝你好运:) 【参考方案1】:使用这个方法,
如果您想手动清除文本字段,请使用以下代码:
textField.text = ""
如果您希望在开始编辑时将文本字段清空,请使用下面的委托方法:
func textFieldDidBeginEditing(textField: UITextField)
textField.text = ""
如果您使用多个文本字段,请使用以下方法:
func textFieldDidBeginEditing(textField: UITextField)
if (textField == oneTextField)
textField.text = ""
else if (textField == anotherTextField)
// Perform any other operation
【讨论】:
如果我有两个 textfiled, 1 , 2 ,当我点击第一个 1textfiled 时会删除“0”,然后当我点击第二个 textfiled2 时会删除“0”,我想当我点击 textfiled2 或任何地方时返回第一个 textfiled 的值 你想区分文本字段,检查格式下面的条件,` func textFieldDidBeginEditing(textField: UITextField) if textField == fi else if textField == anotherTextFieldName ' 检查条件 让我们continue this discussion in chat。 它检查您的文本字段是否等于 yourTextFieldName 然后调用特定的文本字段,只有此代码是您的注释 写你想要的fi.text = ""
或者你在特定的文本字段中提供任何功能,主要是特定的文本字段只调用动作【参考方案2】:
您可以在swift中轻松清除TextField
emailTextField.text?.removeAll()
passwordTextField.text?.removeAll()
confirmPasswordTextField.text?.removeAll()
【讨论】:
我很惊讶有这么多答案引用“”而不是这个。确实有一个功能可以实现这一点。 这应该是公认的答案。【参考方案3】:只需使用textFieldDidBeginEditing
方法来处理焦点变化和明文。
func textFieldDidBeginEditing(textField: UITextField)
textField.text = ""
【讨论】:
【参考方案4】:func textFieldDidBeginEditing(textField: UITextField)
if fi.text == "0"
fi.text = ""
【讨论】:
【参考方案5】:有几种方法可以解决此问题,具体取决于您要查找的内容。第一种是使用占位符,而不是将文本设置为 0。每当用户开始输入时,占位符就会消失,如果他们没有输入任何内容,则占位符会重新出现:
fi.placeholder = "0"
如果您希望 0 成为值而不仅仅是占位符,则有许多内置方法可以跟踪文本字段的编辑/输入/返回/等。但是,这确实需要实现 UITextFieldDelegate,看来您已经完成了。
var isFirstTime = true
override viewDidLoad()
super.viewDidLoad()
fi.delegate = self
func textViewDidBeginEditing(textView: UITextView)
isFirstTime = false
if fi.text == "0"
fi.text = ""
func textViewDidEndEditing(textView: UITextView)
if fi.text.isEmpty
fi.text = "0"
isFirstTime = true
这是第一次 var 仅存在,以便用户可以在选择时键入 0。如果用户不能输入 0,那么它可能会被删除。
【讨论】:
非常感谢,您的代码不适用于我我认为我们应该使用 func textFieldDidBeginEditing 哎呀,误读了正确的问题。本质上是一样的。请注意其他答案,因为它们在很大程度上是不完整的;如果您在开始编辑时始终将文本设置为“”,则用户输入该字段时输入的任何内容都将被删除。【参考方案6】:func textFieldDidBeginEditing(textField: UITextField)
fi.text = ""
func textFieldDidEndEdition(textField: UITextField)
if fi.text isEqualToString:@""
fi.text = @""
【讨论】:
以上是关于如何自动清除文本字段的主要内容,如果未能解决你的问题,请参考以下文章
如果同时使用自动键盘隐藏,则文本字段的清除按钮 (x) 不起作用