[英]Swift 2: Call a method after pressing Return in UITextField
我在提示计算器中有一个文本字段。 我希望技巧计算器更新计算器的所有字段。
无论出于何种原因,使用我现在拥有的当前代码。 直到我按回车一次,再输入另一个(或相同的)值,然后再次按回车,它才调用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(),我的结果相同
谢谢阅读。
因此,当您按下键盘上的右下按钮时,您的textFieldShouldReturn函数将被调用,该按钮可以具有各种标题。 例如“开始”,“返回”,“完成”或“发送”。
您的第一行只能完成UI效果; 意思是当用户点击文本框以输入文本时,在文本框的最右侧将出现一个小框,允许用户清除输入的文本(如果有)。 有点像重置。
当您使用beginFirstResponder时,您几乎要调用另一个键盘来弹出,因此您无法完成任何操作。
使用resignFirstResponder时,您将隐藏键盘。
您要删除的是“ becomeFirstResponder”和第一行,因为这些都无济于事。 那应该是您面临的问题的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.