Я бы предложил использовать функцию UITextFieldDelegate
textFieldDidEndEditing
.Убедитесь, что вы подклассите свой viewController как UITextFieldDelegate
.
class ViewController: UIViewController, UITextFieldDelegate {
Установите для каждого делегата textField значение self в viewDidLoad
.
override func viewDidLoad() {
super.viewDidLoad()
InputFahrenheit.delegate = self
InputCelsius.delegate = self
}
С этим методом вам даже не понадобитсяUIButton, но вы можете использовать кнопку, чтобы заставить textField завершить редактирование следующим образом.
@objc func buttonAction (sender: UIButton) {
self.view.endEditing(true)
}
Что вызовет этот метод делегата, если пользователь редактировал textField.
func textFieldDidEndEditing (textField: UITextField) {
if textField.isEmpty {return} //this prevents nil errors and user would have to type in "0" if wishing to convert zero.
if textField == InputCelsius {
let conversion = Float(textField.text!) * 9/5 + 32
InputFahrenheit.text = String(format: “%.f”, conversion) //“%.1f” will show one decimal place and so forth
} else if textField == InputFahrenheit {
let conversion = ( Float(textField.text!) - 32 ) * 5/9
InputCelsius.text = String(format: “%.f”, conversion)
}
}