我创建了一个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
}
}
答案 0 :(得分:4)
最简单的解决方案可能是将文本字段的“编辑已更改”事件连接到视图控制器中的操作:
只要用户更改字段的内容,文本字段就会触发“编辑已更改”事件。您不必设置代理或注册通知。
如果您想要等到用户退出该字段,还会有“编辑结束”和“退出时结束”事件。
答案 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)