Swift 2:在UITextField中按Return键后调用方法

时间:2015-11-18 23:39:31

标签: ios swift 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()

感谢阅读。

1 个答案:

答案 0 :(得分:1)

因此,当您按下键盘上的右下角按钮时,会调用textFieldShouldReturn函数,该按钮可以有各种标题;例如" Go"," Return"," Done"或" Send"。

你的第一行,只能完成UI效果;这意味着当用户点击文本字段以输入文本时,文本字段的最右侧将出现一个小框,允许用户清除输入的文本(如果有的话)。有点像重置。

当你使用becomeFirstResponder时,你几乎要调用另一个键盘来弹出,所以你不能通过这样做完成任何事情。

当您使用resignFirstResponder时,您正在隐藏键盘。

你想要做的是删除"成为第一个响应者"以及第一行,因为那些人​​没有做任何事情来帮助解决你的问题。这应该是您面临的问题的解决方案。