如何隐藏特定文本字段输入的标签?

时间:2016-01-20 15:29:01

标签: ios xcode swift

我创建了一个Xcode项目,只有一个按钮,一个文本字段和一个标签。当文本字段输入为“test123”或按下按钮时,我想使标签仅可见。带按钮的部分运行良好,但无论我在文本字段中键入什么内容,标签都会隐藏。有人帮吗?这是我目前的代码:

    import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var Label: UILabel!
    @IBOutlet weak var Examplefield: UITextField!


    override func viewDidLoad() {

               super.viewDidLoad()
               // Do any additional setup after loading the view, typically from a nib.

               Label.hidden = true

        Examplefield.resignFirstResponder()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func ButtonPressed(sender: UIButton) {

        Label.hidden = false
    }

    func textFieldDidEndEditing(textField: UITextField) {
        if Examplefield.text == "test123" {
            Label.hidden = false

    }
        else {
            Label.hidden = true
        }

          }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }

}

4 个答案:

答案 0 :(得分:4)

最简单的解决方案可能是将文本字段的“编辑已更改”事件连接到视图控制器中的操作:

connecting the editing changed event

只要用户更改字段的内容,文本字段就会触发“编辑已更改”事件。您不必设置代理或注册通知。

如果您想要等到用户退出该字段,还会有“编辑结束”和“退出时结束”事件。

答案 1 :(得分:1)

您需要从UITextFieldDelegate实现 shouldChangeCharactersInRange 方法,以便在文本更改时检查字符串是否相同:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if (string == "test123") {
        self.Label.hidden = false
    } else {
        self.Label.hidden = true
    }
    return true
}

答案 2 :(得分:0)

使用shouldChangeCharactersInRange效果很好,但另一个选项是使用textFieldDidChange NSNotification。

viewDidLoad中,注册通知:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("textFieldDidChange:"), name: "UITextFieldTextDidChangeNotification", object: nil)

然后定义适当的方法:

 func textFieldDidChange(notification: NSNotification) {
    self.label.hidden = (self.textField.text == "test123")
}

答案 3 :(得分:-1)

使用UITextField Delegate方法

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    // your condition
}

enter image description here