我正在尝试创建一个应用程序,让用户输入4个数字并显示该数字的蜂窝网络。有没有办法在用户输入数字后自动显示标签中的数字而不点击按钮?我实际上有一个代码,允许用户输入数字,但用户必须单击输入按钮才能在标签上显示结果。有没有办法让它自动显示结果?顺便说一下,我真的很新,所以我道歉。这是代码:
import UIKit
import Firebase
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var numField: UITextField!
@IBOutlet weak var answerField: UILabel!
@IBAction func enterButton(sender: AnyObject) {
matchNumber()
}
func matchNumber(){
let number: String = numField.text!
let numRef = Firebase(url: "https://npi2.firebaseio.com/num_details")
numRef.queryOrderedByKey().observeEventType(.ChildAdded, withBlock: { snapshot in
let network = snapshot.value as! String!
if snapshot.key == self.numField.text! {
self.answerField.text = network
}
else {
self.answerField.text = "Missing"
}
})
}
答案 0 :(得分:3)
将目标添加到numField
,类似这样......
override func viewDidLoad() {
super.viewDidLoad()
self.numField.addTarget(self, action: "editingChanged:", forControlEvents: .EditingChanged)
}
每次editingChanged
中的字符发生变化时,都会触发numField
方法。
func editingChanged(textField:UITextField) {
if let text = textField.text {
if text.characters.count == 4 {
matchNumber()
}
}
}
最后,我们检查输入中是否有字符串,如果它在运行matchNumber
方法之前是4个字符。
答案 1 :(得分:0)
您可以使用didSet方法。
var numberstring = String() {
didSet {
yourlabel.text = numberstring
}
}
答案 2 :(得分:0)
如果您使用textfield
来接受输入,那么您可以使用textfieldDidEndEditing
委托方法。