所以我是编程新手,我正在做一个 Swift 税务计算器学习练习。目前,我只是想在开始计算之前设置一些东西。
我试图让代码接受文本输入,将其插入字符串并在 TextView 中打印。
到目前为止,我的代码工作了一次,但从那以后它似乎停止工作了。我基本上只是希望我的代码在用户点击第一个输入文本字段时自行重置。
我试过将 TextView 设置为“”,但这似乎不起作用。它只是插入“”,这不是我想要的。
这是我的代码:
class ViewController: UIViewController {
@IBOutlet weak var income: UITextField!
@IBOutlet weak var takeHomePay: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
income.delegate = self
// Do any additional setup after loading the view.
}
@IBAction func calculateTapped(_ sender: Any) {
if takeHomePay.text.isEmpty {
takeHomePay.text = "You are earning $\(income.text!)"
} else if !takeHomePay.text.isEmpty {
takeHomePay.text = "You need to enter a figure"
} else {
takeHomePay.text = "ERROR"
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
income.resignFirstResponder()
}
}
extension ViewController : UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
为什么我的函数只运行一次?每次更改输入时,我都希望看到输出发生变化。可能是一个简单的修复,但正如我所说,我只是在学习。
帮助将不胜感激!
最佳答案
将委托(delegate)添加到 viewDidLoad
中的 textView
takeHomePay.delegate = self
然后实现
func textViewDidChange(_ textView: UITextView) {
if takeHomePay.text.isEmpty {
takeHomePay.text = "You are earning $\(income.text!)"
} else {
takeHomePay.text = "You need to enter a figure"
}
}
由于 textView 为空或不为空,无法到达最底部
class VCName:UIViewController,UITextViewDelegate{}
关于ios - 为什么我的 Swift 代码函数只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757103/