我在小费计算器中有一个文本字段。我希望小费计算器更新我的计算器的所有字段。
使用我现在拥有的当前代码,无论出于何种原因。它没有调用calcTip()(或者至少它似乎没有),直到我按下返回一次,输入另一个(或相同的)值并再次按下返回。
我真的很接近让这个应用程序完全按照我的要求工作,我觉得我只有1或2行。
我的ViewController符合UITextFieldDelegate,我在viewDidLoad中声明了amountBeforeTaxTextField.delegate = self。
TextShouldReturn:
func textFieldShouldReturn(textField: UITextField) -> Bool {
amountBeforeTaxTextField.clearsOnBeginEditing = true
amountBeforeTaxTextField.becomeFirstResponder()
calcTip()
amountBeforeTaxTextField.resignFirstResponder()
return true
}
calcTip():
func calcTip() {
let tip = tipCalc.calculateTip()
let total = tipCalc.calculateTotal()
let tax = tipCalc.calculateTax()
let perPerson = total / Float(Int(partySizeSlider.value))
tipCalc.tipPercentage = (tipPercentageSlider.value)
tipCalc.amountBeforeTax = (amountBeforeTaxTextField.text! as
NSString).floatValue
tipCalc.taxPercentage = (taxPercentageSlider.value)
resultLabel.text = String(format: "Tip $%.2f, Tax: $%.2f Total: $%.2f", tip, tax, total)
perPersonLabel.text = String(format: "Per-Person Total: $%.2f", perPerson)
}
注意:我和&没有.becomeFirstResponder()
感谢阅读。
答案 0 :(得分:1)
因此,当您按下键盘上的右下角按钮时,会调用textFieldShouldReturn函数,该按钮可以有各种标题;例如" Go"," Return"," Done"或" Send"。
你的第一行,只能完成UI效果;这意味着当用户点击文本字段以输入文本时,文本字段的最右侧将出现一个小框,允许用户清除输入的文本(如果有的话)。有点像重置。
当你使用becomeFirstResponder时,你几乎要调用另一个键盘来弹出,所以你不能通过这样做完成任何事情。
当您使用resignFirstResponder时,您正在隐藏键盘。
你想要做的是删除"成为第一个响应者"以及第一行,因为那些人没有做任何事情来帮助解决你的问题。这应该是您面临的问题的解决方案。