Swift - 自动计算

Swift - Automatic Caluclation

我目前正在使用 swift 构建一个计算器应用程序。 我希望计算是自动的,而不是我按 = 按钮。 EQLabel 是我想要计算的地方 inputLabel 是用户可以看到方程式的地方,例如 1 + 5 下面是我的计算器代码。

// Start of Calculator
@IBOutlet weak var EQLabel: UITextField!
@IBOutlet weak var inputLabel: UITextField!

var numberOnScreen = 0;
var previousNumber = 0;
var performingMath = false
var operation = 0;

@IBAction func numbers(_ sender: UIButton) {
    if performingMath == true {
        inputLabel.text = String(sender.tag-1)
        numberOnScreen = Int(Double(inputLabel.text!)!)
        performingMath = false
    }
    else {
        inputLabel.text = String(sender.tag-1)
        numberOnScreen = Int(Double(inputLabel.text!)!)
    }
}

@IBAction func multiButtons(_ sender: UIButton) {
    if inputLabel.text != "" && sender.tag != 15 {
        previousNumber = Int(Double(inputLabel.text!)!)
        // Plus
        if sender.tag == 11 {
             inputLabel.text! = "+"
        }
        // Times
        if sender.tag == 12 {
             inputLabel.text = "x"
        }
        // Minus
        if sender.tag == 13 {
             inputLabel.text = "-"
        }
        // Divide
        if sender.tag == 14 {
             inputLabel.text = "/"
        }

        operation = sender.tag
        performingMath = true
    }
    else if sender.tag == 15 {
        if operation == 11 {
            EQLabel.text = String(previousNumber + numberOnScreen)
        }
        if operation == 12 {
           EQLabel.text = String(previousNumber * numberOnScreen)
        }
        if operation == 13 {
            EQLabel.text = String(previousNumber - numberOnScreen)
        }
        if operation == 14 {
            EQLabel.text = String(previousNumber / numberOnScreen)
        }
    }

}

尝试在您的按钮上使用 addTarget。但是您的计算器需要知道您何时完成输入第二个数字,除非您只使用特定长度的数字?。如果您希望它在您键入 id 时更新答案,请使用类似的东西。

inputLabel.addTarget(self, action: #selector(yourCaculateMethod), for: .editingChanged) 

然后让您的 equalsLabel.text 等于结果。这会随时更新它。

我也考虑将您的 inputLabel 命名为 inputTextField,因为它有点误导

希望这对您有所帮助。应该做你想做的。

    override func viewDidLoad() {
       yourTextField.addTarget(self, action: #selector(self.calculateTotal(_:)), forControlEvents: UIControlEvents.EditingChanged)
   }

    func calculateTotal() {
       let totalInt = Int(firstTextField.text!) + Int(secondTextField.text!)
       totalLabel.text = String(totalInt)
    }

如果您有任何疑问,请告诉我。