如何自动清除文本字段

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 = @""
     


【讨论】:

以上是关于如何自动清除文本字段的主要内容,如果未能解决你的问题,请参考以下文章

带有“清除按钮”的 UI 自动化清除文本字段

如果同时使用自动键盘隐藏,则文本字段的清除按钮 (x) 不起作用

从自动完成下拉列表中未选择任何选项时如何清除 mat- 自动完成

选择后清除 Jquery 自动完成中的文本框

如何在自动完成字段角度启用退格

如何删除自动完成上的清除按钮并仅显示文本